본문 바로가기
전공공부/코딩테스트

(c++) SWEA "2806) N-Queen"

by 시아나 2022. 5. 28.

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&problemLevel=2&problemLevel=3&contestProbId=AV7GKs06AU0DFAXB&categoryId=AV7GKs06AU0DFAXB&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=CCPP&select-1=3&pageSize=10&pageIndex=1 

 

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