ALGORITHM/PROGRAMMERS
[프로그래머스] N-Queen
0298
2021. 9. 6. 10:49
https://programmers.co.kr/learn/courses/30/lessons/12952
코딩테스트 연습 - N-Queen
가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은
programmers.co.kr
2021-09-06
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
class Solution {
static int answer;
static int[] arr;
static void solve(int row, int n) {
if(row == n) {
answer++;
return;
}
for(int i = 0; i < n; i++) {
arr[row] = i;
if(possible(row)) {
solve(row+1, n);
}
}
}
static boolean possible(int row) {
for(int i = 0; i < row; i++) {
if(arr[row] == arr[i]) return false;
if(Math.abs(row - i) == Math.abs(arr[row] - arr[i])) return false;
}
return true;
}
static int solution(int n) {
answer = 0;
arr = new int[n];
// solve(0, n);
for(int i = 0; i < n; i++) {
arr[0] = i;
solve(1, n);
}
return answer;
}
}
|
cs |
#문제풀이
1차원 배열을 이용해서, arr[열] = 행을 두고 풀었다.
line 30) 0번째 열부터 모두 돌려도 되고, 0번째 열은 행을 하나씩 집어넣고 1번째 열부터 돌려도 된다.