티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/12952

 

코딩테스트 연습 - N-Queen

가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은

programmers.co.kr

 

[프로그래머스][C++] N-Queen

#include <string>
#include <vector>
#include <cmath>
using namespace std;

int answer = 0;
int arr[15];

bool check(int r) {
	for (int i = 0; i < r; i++) {
		if (arr[r] == arr[i] || abs(arr[r] - arr[i]) == abs(r - i))
			return false;
	}
	return true;
}

void dfs(int r, int n) {
	if (r == n) {
		answer++;
		return;
	}

	for (int i = 0; i < n; i++) {
		arr[r] = i;
		if (check(r))
			dfs(r + 1, n);
	}
}

int solution(int n) {
	dfs(0, n);
	return answer;
}
댓글