Skip to content

Commit 1d2177d

Browse files
committed
boj_2580_스도쿠
1 parent 92d7fc2 commit 1d2177d

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

Gold/boj_2580_스도쿠.java

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
5+
import java.util.StringTokenizer;
6+
7+
public class boj_2580_스도쿠 {
8+
9+
static int[][] arr = new int[9][9];
10+
11+
public static void main(String[] args) throws IOException {
12+
13+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
14+
15+
for(int i = 0 ; i < 9 ; i++) {
16+
StringTokenizer str = new StringTokenizer(br.readLine());
17+
for(int j = 0 ; str.hasMoreTokens();j++) {
18+
arr[i][j]= Integer.parseInt(str.nextToken());
19+
}
20+
}
21+
22+
dfs(0,0);
23+
}
24+
static void dfs(int row, int col) {
25+
26+
if(col == 9) {
27+
dfs(row+1,0);
28+
return;
29+
}
30+
31+
if(row == 9) {
32+
StringBuilder sb = new StringBuilder();
33+
for (int i = 0; i < 9; i++) {
34+
for (int j = 0; j < 9; j++) {
35+
sb.append(arr[i][j]).append(' ');
36+
}
37+
sb.append('\n');
38+
}
39+
System.out.println(sb);
40+
41+
System.exit(0);
42+
}
43+
44+
if(arr[row][col]==0) {
45+
for(int i = 1 ; i <= 9 ; i++) {
46+
if(check(row, col, i)) {
47+
arr[row][col] = i;
48+
dfs(row, col+1);
49+
}
50+
}
51+
arr[row][col]=0;
52+
return;
53+
}
54+
55+
dfs(row, col+1);
56+
}
57+
58+
static boolean check(int row, int col, int value) {
59+
60+
//같은열에 무슨 숫자가 비었는지
61+
for(int i = 0 ; i < 9 ; i ++) {
62+
if(arr[row][i] == value) {
63+
return false;
64+
}
65+
}
66+
67+
//같은행에 무슨 숫자가 비었는지
68+
for(int i = 0 ; i < 9 ; i ++) {
69+
if(arr[i][col] == value) {
70+
return false;
71+
}
72+
}
73+
74+
//같은 네모에 뭐가 있는지
75+
int ind_row = (row/3)*3;
76+
int ind_col = (col/3)*3;
77+
78+
for(int i = ind_row ; i < ind_row+3 ; i ++) {
79+
for(int j = ind_col ; j < ind_col +3 ; j++) {
80+
if(arr[i][j] == value)
81+
return false;
82+
}
83+
}
84+
85+
return true;
86+
}
87+
88+
89+
}

0 commit comments

Comments
 (0)