[알고리즘 문제해결 전략]6장. 무식하게 풀기_⑤
2018. 12. 30. 00:26ㆍAlgorithm/알고리즘 문제해결 전략
CLOCKSYNC in algospot
problem
Thinking
완전 탐색을 하기위해 그 방법을 모색해보자. 같은 스위치를 4번 눌리면 한바퀴를 도는 것과 동일하다. 즉 같은 스위치를 몇번 누르던 상관이 없다는 것이다. 그리고 스위치를 누르는 순서가 어찌되던 그 결과는 동일하다. 그러므로 스위치를 누르는 순서에 신경을 쓸 필요도 없다.
이 문제를 앞서 해결한 BOARDCOVER문제와 비슷하게 생각해서 풀어보자. 하나의 스위치를 몇번누를지 결정하고 다음스위치를 누르는 횟수를 정하는 형식으로 문제를 풀어보자.
Important Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void solve(int* clock, int switch_num, int now) { if (ans <= now)return; // 만약 이제까지 구한 스위치을 누른 횟수가 이전에 구해놓은 정답보다 크다면 탐색을 멈춘다. if (switch_num == 10) {//만약 0에서 9까지의 모든 스위치를 탐색하여 10으로 올 경우 if (is_same(clock) == 0)return;// 모든 시계바늘이 12를 가리키는지 확인한다. ans = min(ans, now);//더 작은 값이 정답이 된다. return; } for (int i = 0; i < 4; i++) {//switch_num에서 스위치를 누를 횟수를 정한다 clock_wise(clock,switch_num,i);//정해진 스위치의 횟수만큼 버튼을 눌러준다. solve(clock,switch_num + 1,now+i);//다음 스위치를 누를 횟수를 정하로 간다. Cnt_clock_wise(clock,switch_num,i);//원상복귀시켜 (시계반대방향으로 회전) 다음 횟수에 대하여 답을 구할 수 있게한다. } } | cs |
Solve
출처
문제: algosport CLOCKSYNC문제( 링크 )
'Algorithm > 알고리즘 문제해결 전략' 카테고리의 다른 글
[알고리즘 문제해결 전략]6장. 무식하게 풀기_④ (0) | 2018.12.29 |
---|---|
[알고리즘 문제해결 전략]6장. 무식하게 풀기_③ (0) | 2018.12.29 |
[알고리즘 문제해결 전략]6장. 무식하게 풀기_② (0) | 2018.12.29 |
[알고리즘 문제해결 전략]6장. 무식하게 풀기_① (0) | 2018.12.28 |
[알고리즘 문제해결 전략]5장. 알고리즘의 정당성 증명 (0) | 2018.12.27 |