N-Queen

가로, 세로 길이가 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;
}