백준 14891. 톱니바퀴
https://www.acmicpc.net/problem/14891
14891번: 톱니바퀴
첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터
www.acmicpc.net
톱니바퀴의 1번 톱니가 12시 방향 톱니라고 할때 톱니바퀴의 톱니를 배열형태로 나열해보면
1 2 3 4 5 6 7 8 // 1번 톱니바퀴
1 2 3 4 5 6 7 8 // 2번 톱니바퀴
1 2 3 4 5 6 7 8 // 3번 톱니바퀴
1 2 3 4 5 6 7 8 // 4번 톱니바퀴
위와 같은 형태로 나타난다.
그리고 하나의 톱니의 3번 톱니가 왼쪽 톱니의 7번톱니이고, 7번 톱니가 오른쪽 톱니바퀴의 3번 톱니이다.
따라서 어떤 톱니바퀴를 돌렸을때 왼쪽 톱니바퀴가 돌아가는지 확인하는 기준은 현재 톱니바퀴의 3번 톱니와 왼쪽 톱니바퀴의 7번 톱니가 다른값이면 회전해야 한다 (반대방향으로).
마찬가지로 오른쪽 톱니바퀴가 돌아가는지 확인하는 기준은 현재 톱니바퀴의 7번 톱니와 오른쪽 톱니바퀴의 3번 톱니가 다른값이면 회전해야한다.
나는 현재 톱니바퀴를 기준으로 왼쪽,오른쪽 톱니바퀴를 확인후 회전한다면 재귀적으로 다음 톱니바퀴가 호출되도록 했다.
왼쪽, 오른쪽 톱니바퀴가 회전하지 않는다면 어처피 그 이후 톱니바퀴들도 회전하지 않으므로 확인할 필요가 없다.