판단과 실행을 분리해야 한다는 점을 깨닫기까지 이 문제에서 “1번 톱니를 회전시킨다”는 말은1번 톱니를 회전의 시작점으로 삼는다는 뜻에 가깝다.즉 실제 동작 순서는 다음과 같다.현재 상태를 기준으로 인접한 톱니끼리 맞닿은 극을 비교한다.어떤 톱니가 어느 방향으로 회전할지 결정한다.회전 여부가 모두 결정된 뒤, 실제 회전을 한꺼번에 적용한다.핵심은 비교는 현재 상태로 하고, 회전은 나중에 한다는 점이다.왜 바로 회전하면 안 되는가처음에는 DFS로 인접 톱니를 타고 들어가면서 바로 회전시키면 될 것 같았다.하지만 이 방식에는 문제가 있다.예를 들어 1번 톱니를 먼저 회전시켜 버리면, 1번 톱니의 배열이 바뀐다.그러면 그 다음에 2번 톱니와의 접점을 비교할 때는 원래 상태가 아니라 이미 회전된 상태를 기준으..