import java.util.Scanner; public class Main { static int N; static int cnt; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); cnt=0; int[][]map = new int[N][N]; dfs(map,0); System.out.println(cnt); } static void dfs(int [][]map, int line) { if(line==N) { cnt++; return; } for(int i=0;i<N;i++) { if(ispromising(map,line,i)) { map[line][i]=1; dfs(map,line+1); map[line][i]=0; } } } private static boolean ispromising(int[][]map , int row, int column) { //위 검사 for(int i=row;i>=0;i--) { if(map[i][column]==1) { return false; } } // 왼쪽 대각 검사 for(int i=row, j=column;i>=0&&j>=0;i--,j--) { if(map[i][j]==1) { return false; } } //오른쪽 대각 검사 for(int i=row, j=column;i>=0&&j<N;i--,j++) { if(map[i][j]==1) { return false; } } return true; } }
'코딩테스트(백준)' 카테고리의 다른 글
[백준] 2606 : 바이러스 -JAVA(자바) - 사좋배 공유 (0) | 2020.02.21 |
---|---|
[백준] 11399 : ATM -JAVA - 사좋배 공유 (0) | 2020.02.21 |
[백준] 9093 : 단어 뒤집기 -JAVA - 사좋배 공유 (0) | 2020.02.21 |
[백준] 8320 : 직사각형을 만드는 방법 -JAVA - 사좋배 공유 (0) | 2020.02.21 |
[백준] 7576 : 토마토 -JAVA - 사좋배 공유 (0) | 2020.02.21 |