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가 정답이 됩니다.

djm03178   5년 전

2번 방법을 예시로 설명할 때 번호를 "각 자리에 놓인 컵의 번호"가 아니라 "각 번호의 컵이 놓인 자리"로 설정하고 과정을 따라가보면 1번 방법과 동일하게 나올 수밖에 없다는 것을 알 수 있습니다. [x, y, z]는 [1번 컵이 놓인 자리, 2번 컵이 놓인 자리, 3번 컵이 놓인 자리]라고 보는 거죠. 그러면 1번 방법이나 2번 방법이나 둘 다 '교환'이라는 동일한 연산 하나만을 사용하고 있고 그 피연산자들의 순서도 항상 같다는 것을 알 수 있습니다.

가장 처음에 컵의 '번호'나 '자리'나 둘 다 [1, 2, 3]으로 시작하기 때문에, 각 과정의 결과가 같다면 전체 과정의 결과도 같을 수밖에 없습니다.

onsil   5년 전

감사합니다.

이해하는데 큰 도움이 되었습니다!

좋은 하루 되세요~

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