Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- e-HR
- 뷰 리액트
- 면접
- 대문자
- 트리
- 쟈스
- MySQL
- CompositionAPI
- 1차면접
- 알고리즘
- SBS 개발
- SBS 본사
- 자바
- 뷰 리액트 비교
- Vue.js
- 리액트
- IT시스템개발
- 첫 리액트
- 간단 프로젝트
- 오라클
- 첫 React
- 백준알고리즘
- 경력직
- react
- 사내시스템
- 백준
- 프로젝트 후기
- URL입력
- 웹 개발 면접 질문
- 뷰
Archives
- Today
- Total
리주의 프로그래밍 공부
[9663] N-Queen 본문
얼핏 보면 2차원배열로 퀸을 놓으면 안되는 자리만 체크해주면 쉽게 풀릴듯하다. 그렇게 보고 푸는 아이디어만 생각하고 검색을 해봤다.
그런데... 다들 1차원 배열로 풀었다. 2차원으로 풀면 시간초과가 난다고...
그래서 다른 사람들의 풀이를 참고하였다.
import java.io.IOException;
import java.util.Scanner;
public class Main {
static int n;
static int result = 0;
static int[] map;
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
map = new int[n + 1];
for(int i=1; i<=n; i++) {
map[1] = i;
dfs(1);
}
System.out.println(result);
}
public static void dfs(int cnt) {
if(cnt == n) {
result++;
}
for (int i = 1; i <= n; i++) {
if (check(i, cnt+1)) {
map[cnt+1] = i;
dfs(cnt+1);
}
}
}
public static boolean check(int x, int cnt) {
for(int i=1; i<cnt; i++) {
if(x == map[i] || Math.abs(x - map[i]) == Math.abs(cnt - i)) {
return false;
}
}
return true;
}
}
하고나면 코드가 매우 간단한데....
이런 접근법을 어떻게 생각해야하는걸까
'알고리즘 공부(백준)' 카테고리의 다른 글
[15650] N과 M (2) (0) | 2021.03.19 |
---|---|
[15651] N과 M (3) (0) | 2021.03.18 |
[2606] 바이러스 (0) | 2021.01.13 |
[2293] 동전 1 (0) | 2021.01.04 |
[11286] 절댓값 힙 (0) | 2021.01.02 |