0, 1, 2의 인덱스를 가지는 어떤 놈이 있다. 즉, a[0], a[1], a[2]가 있다. 이 셋의 인덱스를 순서대로 재 배열해야 하는데, a[0]은 셋중 가장 작은 것, a[2]는 셋중 가장 큰 것, a[1]는 나머지 하나. 가장 큰 것과 가장 작은 것은 알아낼 수 있는데 나머지 하나가 어떤 것인지 알아내야 한다. 그냥 정렬하면 되지 않나 싶은데, 원래 어떤 인덱스를 갖고 있었는지 보존시켜야 하는 상황이다.

인덱스 중 가장 작은 것이 갖고 있던 걸 m, 가장 큰 것이 갖고 있는 것을 M이라고 하자. 그럼 나머지 하나의 인덱스 x는
x = (m + M) * 2 % 3
으로 표현된다.
(0,1)인 경우 2, (0,2)인 경우 1, (1,2)인 경우 0이 나온다.

아무튼 이런 함수가 필요한 상황이어서 만들었다.

by snowall 2011. 7. 10. 16:39