mts90   5년 전

개미가 충돌하면 그냥 지나치는 것 이라고 가정하는 문제라는 건 알겠는데

ID가 양수면 시간은 L-position

ID가 음수면 시간은 position  이잖아요????

그런데 이렇게 해서 쭉 결과를 냈으면 

어떤놈들이 충돌해서 바뀐건지를 알아야 하는데 이 부분이 도저히 모르겠어요

아래 코드는 시간초과난 코드인데요 배열을 2개 만들어서 오른쪽으로 가는 경우 왼쪽으로 가는 경우 나눴습니다.

코드를 제대로 읽어보지는 않았지만, 개미문제를 푸는데 쓰이는 또 다른 중요한 성질중 하나는 "번호간의 순서는 절대 바뀌지 않는다."입니다.

예를 들어 번호 5 9 2 14 순으로 직선위에 있었다 치면, 아무리 시간이 흘러도 개미들의 위치는 달라질지언정 5 9 2 14라는 순서는 절대 바뀌지 않아요. 그걸 유념하고 다시 문제를 보면 중간중간 발생하는 번호의 교환을 전부 기억하는 대신 왼쪽으로 떨어진 개미의 수와 오른쪽으로 떨어진 개미의 수만 알면 된다는 점을 알 수 있을 거에요.

atomzeno   5년 전

진짜 그냥 윗 분 말대로 하시면 될 듯 ㅎㅎ

좀 보충을 하면, 4(->), 5(->), -1(<-), -3(<-), -2(<-), 6(->)이 충돌하고 그 결과가 4(<-), 5(<-), 1(<-), -3(->), -2(->), 6(->) 이 된다는 사실을 관찰한 뒤에

각 화살표를 대응시키는 것(4->3, 5->2, 6->6, -1->4, -3->5, -2->1)을 생각하시면 O(NlogN)만에 알아낼 수 있을듯 합니다(맞겠지)

mts90   5년 전

역시 고수님들은 달라도 많이 다르네요!!!

완전 감사합니다!!!!!!!!!!!!!! 

한방에 퐉 이해가 됐어요

댓글을 작성하려면 로그인해야 합니다.