Tags
- greedy
- ๊ทธ๋ํ ์ด๋ก
- DP
- ๋๋น ์ฐ์ ํ์
- ๊ตฌํ
- ์ํ
- BOJ
- ์๋ฎฌ๋ ์ด์
- SpringBoot
- PGM
- Dynamic Programming
- Study
- ๋ฌธ์์ด
- ๊ต์ฌ
- sort
- Python
- dfs
- ๊ทธ๋ํ ํ์
- LV2
- ์ ๋ ฌ
- queue
- ์๋ฃ๊ตฌ์กฐ
- ๋ฐฑํธ๋ํน
- ๊น์ด ์ฐ์ ํ์
- BFS
- CodingTest
- ์ ์๋ก
- stack
- Brute Force Algorithm
- Java
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2239 : ์ค๋์ฟ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- 9 x 9 ์ค๋์ฟ ์ ๋น์นธ์ ์ฑ์ฐ๋ ๋ฌธ์ ์ด๋ค.
- ์ค๋์ฟ ๋ ๊ฐ๋ก, ์ธ๋ก, ์์ 3x3 ์นธ์ ์ค๋ณต๋๋ ์ซ์๊ฐ ์์ด์ผ ํ๋ค.
- ์ฌ๋ฌ ๊ฐ์ ๋ต ์ค ์ฌ์ ์์ผ๋ก ์์๋ ๊ฒ์ ์ถ๋ ฅํ๋ค.
- ๊ทธ๋ฆฌ๋ํ๊ฒ ์ ๊ทผํด์ ์ข์๋จ๋ถํฐ ์ฐํ๋จ์ผ๋ก ๋ฃ์ ์ ์๋ ์์ ์๋ค์ ๋ฃ๋ค๋ณด๋ฉด ๋ฃ์์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.
- ๋ฐ๋ผ์ ๋ฃ์ ์ ์๋ ๊ฒฝ์ฐ๋ ๋ค์ ๋์๊ฐ์ ๋ค์ ์ซ์๋ฅผ ๋ฃ์ด๋ด์ผ ํ๋ฏ๋ก ๋ฐฑํธ๋ํน์ ์ฌ์ฉํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static int[][] map;
private static boolean recu(int n) {
if (n == 81) return true;
int r = n / 9;
int c = n % 9;
if (map[r][c] != 0) return recu(n + 1);
else {
boolean[] used = new boolean[10];
for (int k = 0; k < 9; k++) {
used[map[r][k]] = true; // check row
used[map[k][c]] = true; // check col
}
// check 3x3
int x = r / 3 * 3;
int y = c / 3 * 3;
for (int k = x; k < x + 3; k++) {
for (int l = y; l < y + 3; l++) {
used[map[k][l]] = true;
}
}
for (int k = 1; k <= 9; k++) {
if (!used[k]) {
map[r][c] = k;
if (recu(n+1)) return true;
}
}
map[r][c] = 0;
return false;
}
}
public static void main(String[] args) throws IOException {
// Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
map = new int[9][9];
for (int i = 0; i < 9; i++) {
String[] ss = br.readLine().split("");
for (int j = 0; j < 9; j++) {
map[i][j] = Integer.parseInt(ss[j]);
}
}
// Sudoku
recu(0);
// Output
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
sb.append(map[i][j]);
}
sb.append('\n');
}
System.out.print(sb);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ฌ๊ท ๋ฉ์๋ recu๋ฅผ ํตํด ์ค๋์ฟ ๋ฅผ ์ฑ์ ๋๊ฐ๋ค.
- 81์นธ์ ๋ชจ๋ ์ฑ์ฐ๋ฉด ์ฑ๊ณต์ด๋ฏ๋ก ์ฌ๊ท๋ฅผ ์ข ๋ฃํ๋ค. (true ๋ฆฌํด)
- ์ค๋์ฟ ํ์์ ํ๊ณผ ์ด์ n์ ๋ชฉ๊ณผ ๋๋จธ์ง๋ก ์ ๊ทผํ๋ค.
- ์ด๋ฏธ ๊ฐ์ด ์ฑ์์ ธ ์์ผ๋ฉด ๋ค์ ์นธ์ ํ์ธํ๋ค.
- ์ฑ์์ ธ ์์ง ์๋ค๋ฉด, ๊ฐ๋ก/์ธ๋ก/3x3์ ํ์ธํด์ ๋ฑ์ฅํ ์ซ์๋ฅผ used ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก true๋ฅผ ์ ์ฅํ๋ค.
- ๋ฃ์ ์ ์๋ ๊ฐ์ ์์ ์์ผ๋ก ๋ฃ์ด๋ณด๊ณ ์ฌ๊ท๋ก ๋๊ธด๋ค.
- ๋ง์ฝ ์ฑ๊ณตํ์ผ๋ฉด ์ข ๋ฃ, ์คํจํ๋ฉด ๋ค์ ๊ฐ์ ๋ฃ๋๋ค.
- ์ฌ๊ท ์ข
๋ฃ ํ ์ค๋์ฟ ํ์ ์ถ๋ ฅํ๋ค.
- ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์๋ค.
๐ธ end ๐ธ
- ์ฒ์์ ๊ทธ๋ฆฌ๋๋ก ์ ๊ทผํด์ ๊ฐ์ ์ฐพ์ง ๋ชปํ 0์ธ ๋ถ๋ถ๋ค์ด ๋ถ๋ถ๋ถ๋ถ ๋ํ๋ฌ๋ค.
- ๋๋ฒ๊น ๊ณผ์ ์์ ๋ฐฑํธ๋ํน์ด ํ์ํ๋ค๋ ์ฌ์ค์ ์๊ณ ์ฝ๋๋ฅผ ์์ ํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_14890 : ๊ฒฝ์ฌ๋ก (0) | 2023.04.07 |
---|---|
BOJ_13459 : ๊ตฌ์ฌ ํ์ถ (0) | 2023.04.06 |
BOJ_17141 : ์ฐ๊ตฌ์ 2 (0) | 2023.04.06 |
BOJ_2636 : ์น์ฆ (0) | 2023.04.06 |
BOJ_1600 : ๋ง์ด ๋๊ณ ํ ์์ญ์ด (0) | 2023.04.06 |