가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요.
#include <string>
#include <vector>
using namespace std;
int Promising(vector<int> node, int level) {
for (int i = 0; i < level; i++)
for (int j = i + 1; j < level; j++)
if (node[i] == node[j] || abs(node[i] - node[j]) == abs(i - j))
return 0;
return 1;
}
void NQueen(vector<int>& node, int level, int n, int& answer) {
if (Promising(node, level)) {
if (level == n) {
answer++;
return;
}
for (int i = 0; i < n; i++) {
node[level] = i;
NQueen(node, level + 1, n , answer);
}
}
}
int solution(int n) {
int answer = 0;
int level = 0;
vector<int> node(n, 0);
NQueen(node, level, n, answer);
return answer;
}