hades

[Baekjoon] 9663๋ฒˆ: N-Queen ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

[Baekjoon] 9663๋ฒˆ: N-Queen

hades1 2024. 8. 28. 21:54

๐Ÿฅ… ๋ฌธ์ œ

https://www.acmicpc.net/problem/9663

 

๐Ÿ” ์„ค๊ณ„

N-Queen์—์„œ ํ€ธ๋“ค์€ ๊ฐ™์€ ํ–‰, ๊ฐ™์€ ์—ด, ๋Œ€๊ฐ์„ ์— ๋†“์ด์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

 

ํ•œ ํ–‰์”ฉ ๋ชจ๋“  ์—ด์— ๋ฐฐ์น˜๋ฅผ ์‹œ๋„ํ•˜๊ณ , ๋ฐฐ์น˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉด, ๋‹ค์Œ ํ–‰์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ๋ฐฐ์น˜ํ•œ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

check์—์„œ ํ˜„์žฌ ํ–‰๊ณผ ํ˜„์žฌ ํ–‰ ์ด์ „๊นŒ์ง€์˜ ํ–‰์„ ์‚ดํŽด๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ํ–‰์— ๋†“์ผ ์ˆ˜ ์—†๊ณ , ๊ฐ™์€ ์—ด์ธ์ง€, ๋Œ€๊ฐ์„ ์— ์œ„์น˜ํ•˜๋Š”์ง€๋งŒ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

 

๐Ÿ‘Š ํ’€์ด

#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;

int n, result = 0;
vector<int> col(15);

bool check(int cur_row) {
	for (int i = 1; i < cur_row; i++) {
		if (col[i] == col[cur_row]) {
			return false;
		}
		if (cur_row - i == abs(col[i] - col[cur_row])) {
			return false;
		}
	}
	return true;

}

void nqueen(int cur_row) {
	if (cur_row == n + 1) {
		result += 1;
		return;
	}

	for (int i = 1; i <= n; i++) {
		col[cur_row] = i;
		if (check(cur_row)) {
			nqueen(cur_row + 1);
		}
	}
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);	
	cin >> n;

	nqueen(1);

	cout << result << "\n";
	
	return 0;
}