출처 : https://algospot.com/judge/problem/read/CLOCKSYNC
정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.08/AOJ%20CLOCKSYNC.cpp
이 문제는 DFS문제이다. 완전탐색을 해도 4^10 정도로 풀 수 있다. 처음 이문제를 봤던게 아마 2년전쯤일것이다. 정말 멘붕을 하며 어렵다 생각했었는데 이제보니 별것도 아니었다.
키워드는 다음과 같다.
시계를 4번누르게되면 원위치가 된다. 그러므로 모든 시계를 한번씩 눌러본다.
그렇다면 간단히 이런 계산이나온다
for(i<4)
시계 버튼 누름
for(i)
변화
이런식이 되는데 즉 처음 포문은 시계버튼을 몇번 누르는가 이고 그아래는 변화를 주는것이다. 먼저 변화를 주지 않는 이유는 시계를 누르지 않을 가능성도 있기 때문이다. 물론 먼저써줘서 결국 4번을 누르면 원위치되게끔 해도 된다.
몇번째 시계버튼을 누를지는 dfs함수의 인자로 넣어주게 된다. 그래서 +1씩하면서 10이되면 검사하고 출력하게 하면 된다.
당시 나는 DFS/BFS를 잘한다고생각했는데 지금생각하면 쥐뿔도 못하는게 깝쳤던거같다.
'Algorithm' 카테고리의 다른 글
[AC] 1939 중량제한 (0) | 2016.08.30 |
---|---|
[AC] 1600 말이 되고픈 원숭이 (0) | 2016.08.30 |
[AOJ] BOARDCOVER 게임판 덮기 (0) | 2016.08.22 |
[AC] 1918 후위표기식 (0) | 2016.08.22 |
[AC] 1197 최소 스패닝 트리 (0) | 2016.08.22 |