본문 바로가기

Problem/백트래킹

[C/C++] BOJ 9663 :: N-Queen BOJ 9663 :: N-Queen 문제 링크 : https://www.acmicpc.net/problem/9663 나의 풀이 1. backtracking 방법으로 queen을 놓으며 방법의 개수를 센다. 2. 반환조건 : 1. N개의 queen을 모두 놓은 경우 ans를 갱신하고 return. 2. 현재 행에 queen을 놓지 못하고 다음 행으로 넘어간 경우 return. (col >= N) (N*N 행렬에 N개의 queen을 놓으려면 한 행에 하나의 queen이 반드시 놓여져야만 한다.) 3. 탐색 행이 N을 넘어간 경우 return. (row >= N) (마지막 행까지 queen을 놓았는데 N개의 queen을 놓지 못한 경우) 3. ▥, ▤, ▨, ▧ 방향에 queen이 채워져 있지 않은 경우,qu..
[C/C++] BOJ 1799 :: 비숍 BOJ 1799 :: 비숍 문제 링크 : https://www.acmicpc.net/problem/1799 문제 풀이 두 방향의 대각선에 비숍이 놓여져 있는지 확인하면서 처음부터 끝까지 찾는 일반적인 방법으로는 계속 시간초과가 났다. 3시간 동안 생각해보았지만 ㅠㅠ 시간을 줄일 수 있는 방법을 알아내지 못하여 다른 사람들의 코드를 참고해 풀기로 하였다.. 내가 참고한 블로그 : http://wookje.dance/2017/11/01/boj-1799-%EB%B9%84%EC%88%8D/ ★ 체스판을 두 경우로 나누어 푸는 것이 핵심적인 방법이다! 비숍의 경우, 검은색 칸과 흰색 칸은 각자의 비숍을 놓을 수 있는 자리에 영향을 주지 않는다.검은색 칸은 검은색 칸끼리만 영향을 받고 흰색 칸은 흰색 칸끼리만 영향..