2018. 1. 7. 13:16, 알고리즘/BOJ
https://www.acmicpc.net/problem/2580
0으로 차있는 빈칸들에 대해, 우선 반드시 하나의 값으로 고정되는 경우를 먼저 처리하고 그 후 남아있는 빈칸들에 대해 백트래킹으로 1~9까지를 넣어보면서 처리를 하면 되는데, 이 때 까닥하다가 시간을 넘길까 싶어 시간을 줄이기 위한 다양한 방법을 고안했습니다. 저같은 경우에는 (i, j)칸이 0일 경우 blank[idx]에 (i, j)를 저장했고, blank[a]에 대해, blank[a]에 영향을 줄 수 있는 모든 blank[j]를 따로 저장했습니다. 또한 valid[i][j]에 (i, j)칸에 들어갈 수 있는 수의 목록을 저장했습니다.
이를 통해 백트래킹에서 특정 값을 특정 칸에 들어가도 되는지 최대한 적은 연산으로 알아낼 수 있도록 했습니다.
이게 지역본선 초등부, 중등부 문제라니 믿기지가 않습니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 11729번: 하노이 탑 이동 순서 (0) | 2018.01.07 |
---|---|
[BOJ] 10942번: 팰린드롬? (0) | 2018.01.07 |
[BOJ] 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2018.01.07 |
[BOJ] 1005번: ACM Craft (0) | 2018.01.07 |
[BOJ] 10251번: Driving License (0) | 2018.01.07 |
[BOJ] 11060번: 점프 점프 (0) | 2018.01.06 |
Comments