[BOJ] N-Queen

황재찬·2023년 8월 29일


Sol)

백트래킹으로 모든 경우의 수를 따지면 해결돼는 문제이다.
여기서 각 행과 열에 퀸이 하나만 들어갈 수 있다는 점을 적용시키면 많은 경우의 수를 줄일 수 있다.


처음에는 위의 방법을 생각하지 못하고 모든 경우의 수를 따져서 시간초과가 나서 많이 당황했다..

메인 해결 코드

void sol(int t) {  // t: t번째 열
	if (t == n) ans++;
	else {
		for (int i = 0; i < n; i++) {
			if (putQ(t, i)) { // 퀸을 둘 수 있는지 체크하는 함수 putQ
            	//만약 퀸을 둘 수 있다면 현재 위치에 퀸을 둔다.
				map[t][i] = 1;
				sol(i, t + 1);
				map[t][i] = 0;
			}
		}
	}
}
profile
coding chobo

0개의 댓글