SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
#include <iostream>
#include <vector>
using namespace std;
int N, sum = 0;
bool check(int limit, vector<int> &rows) {
for (int i = 0; i < limit; i++) {
if (rows[i] == rows[limit] || abs(rows[i] - rows[limit]) == limit - i) {
return false;
}
}
return true;
}
void Nqueen(int row, vector<int> &rows) {
if (row == N) {
sum++;
return;
}
for (int i = 0; i < N; i++) {
rows[row] = i;
if (check(row,rows)) {
Nqueen(row + 1,rows);
}
}
}
int main() {
int T; cin >> T;
for (int t = 1; t <= T; t++) {
vector<int> rows(20, -1);
sum = 0;
cin >> N;
Nqueen(0,rows);
cout << "#" << t << " " << sum << endl;
}
return 0;
}
참고한 블로그 :
https://cryptosalamander.tistory.com/58
[백준 / BOJ] - 9663번 N-Queen C++ 풀이
백준 - 단계별로 풀어보기 [9663] https://www.acmicpc.net/problem/9663 문제 풀이 N-Queen 문제는 백트래킹의 가장 대표적인 예제로서, 퀸의 특성상 체스판 한 행당 한 개의 퀸만 존재할 수 있다는 것을 전제..
cryptosalamander.tistory.com
'전공공부 > 코딩테스트' 카테고리의 다른 글
| (c++) 1209) Sum (0) | 2022.05.28 |
|---|---|
| (c++) SWEA "1215) 회문1" (0) | 2022.05.28 |
| (c++) SWEA "1974) 스도쿠 검증" (0) | 2022.05.28 |
| (c++) SWEA "2805) 농작물 수확" (0) | 2022.05.28 |
| (c++) SWEA "2007) 패턴 마디의 길이" (0) | 2022.05.28 |