2번 방법을 예시로 설명할 때 번호를 "각 자리에 놓인 컵의 번호"가 아니라 "각 번호의 컵이 놓인 자리"로 설정하고 과정을 따라가보면 1번 방법과 동일하게 나올 수밖에 없다는 것을 알 수 있습니다. [x, y, z]는 [1번 컵이 놓인 자리, 2번 컵이 놓인 자리, 3번 컵이 놓인 자리]라고 보는 거죠. 그러면 1번 방법이나 2번 방법이나 둘 다 '교환'이라는 동일한 연산 하나만을 사용하고 있고 그 피연산자들의 순서도 항상 같다는 것을 알 수 있습니다.
가장 처음에 컵의 '번호'나 '자리'나 둘 다 [1, 2, 3]으로 시작하기 때문에, 각 과정의 결과가 같다면 전체 과정의 결과도 같을 수밖에 없습니다.
onsil 5년 전
이 문제를 설명된 대로 구현해서 풀기는 했습니다.
그런데 다른 분들 코드를 보니, 공이 1번 자리에 그대로 있는게 아니라
컵 이동에 따라 공이 같이 움직이는, 전형적인 야바위 방식으로 풀으셨더라구요.
- 공은 그대로고 컵만 컵번호에 따라 움직였을 때, 이동 후 공 위치의 컵 번호를 구하는 것과
- 공과 컵이 같이 움직이고, 컵 번호대로 이동하는게 아니라 컵의 위치대로 움직였을 때, 이동 후 공 위치가 몇번째에 있는지를 구하는 것이
왜 결과적으로 똑같은지를 이해하고 싶습니다.
간단한 예를 들어
2
1 3
2 3
일때
1번 방법으로는
[1, 2, 3] -> [3, 2, 1] -> [2, 3, 1] 이 되서 첫번째 자리 숫자인 2가 정답이 되고,
2번 방법으로는
[1, 2, 3] -> [3, 2, 1] -> [3, 1, 2] 이 되서 원래 공이 있던 1번 컵이 두번째 자리에 있으므로 2가 정답이 됩니다.