BOJ_G4_2239
๐ [G4_2239] ์ค๋์ฟ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
static int[][] map;
static ArrayList<int[]> list;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// ํ
map = new int[9][9];
list = new ArrayList<int[]>();
for (int i = 0; i < 9; i++) {
String str = br.readLine();
String[] sstr = str.split("");
for (int j = 0; j < 9; j++) {
map[i][j] = Integer.parseInt(sstr[j]);
if (map[i][j] == 0) {
list.add(new int[] { i, j });
}
}
}
perm(0);
}
// ์์ด
static void perm(int idx) {
// ๊ธฐ์ ์กฐ๊ฑด
if (list.size() == idx) {
output();
// ์ฆ ์ ์ข
๋ฃ !!!
System.exit(0);
}
// ์ขํ ๊ธฐ๋ก
int x = list.get(idx)[1];
int y = list.get(idx)[0];
// 1 ~ 9 ๊น์ง ์ฌ์ฉ๋ ์ซ์ ์ฒดํฌ true
boolean[] v = new boolean[10];
// ํํ์ธ
check_row(x, y, v);
// ์ดํ์ธ
check_col(x, y, v);
// 3*3 ํ์ธ
int startX = (x / 3) * 3;
int startY = (y / 3) * 3;
check(startX, startY, v);
for(int i=1; i<10; i++) {
// ์์ง ์๋ฅผ ๋ฃ์ง ์์ ์๋ฆฌ๋ฉด
if(!v[i]) {
map[y][x] = i;
perm(idx+1);
// ๋ฐฑํธ๋ํน
map[y][x] = 0;
}
}
}
// 3*3 ๋ฐฐ์ด ํ์ธ
static void check(int x, int y, boolean[] v) {
for (int i = y; i < y + 3; i++) {
for (int j = x; j < x + 3; j++) {
if (map[i][j] != 0) {
v[map[i][j]] = true;
}
}
}
}
// ํํ์ธ -> ์ด๋ฏธ ๋ณธ์ธ ๊ฐ์ด ์์ผ๋ฉด false , ์๋๋ฉด true
static void check_row(int x, int y, boolean[] v) {
for (int i = 0; i < 9; i++) {
if (map[y][i] != 0)
v[map[y][i]] = true;
}
}
// ์ดํ์ธ -> ์ด๋ฏธ ๋ณธ์ธ ๊ฐ์ด ์์ผ๋ฉด false , ์๋๋ฉด true
static void check_col(int x, int y, boolean[] v) {
for (int i = 0; i < 9; i++) {
if (map[i][x] != 0)
v[map[i][x]] = true;
}
}
// ์ค๋์ฟ ์ถ๋ ฅํ๋ ๋ถ๋ถ
static void output() {
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
System.out.print(map[i][j]);
}
System.out.println();
}
}
}
๐ค ๋์ ์๊ฐ
์ด ๋ฌธ์ ๋ ์ค๋์ฟ ๋ฌธ์ ์ด๋ค. ์ฌ์ค ํ, ์ด, 33 ๋ฐฐ์ด ์ผ๋ 1~9๊ฐ ๋ง์์ผ๋๋ค ๋ง๊ณ ๋ ๋ค๋ฅธ ์ธ ๋งํ ์ค๋์ฟ ํธ๋ ์ ๋ณด๊ฐ ํ์์๋ค.
์ฌ์ค ์ค๋์ฟ ๋ฅผ ์ค์ ๋ก ํ ๋๋ 1~9 ์ซ์๊ฐ ๊ฐ์ฅ ๋ง์ด ๋ถํฌํด์๋ ์ ๋ณด๋ถํฐ ํธ๋ ํ์ด ์๋๋ฐ ๊ทธ ํ์ ๋ณ๋ก ์ธ๋ชจ ์๋ ๊ฒ ๊ฐ๋ค.. ใ
ใ
3๊ฐ์ง ์กฐ๊ฑด ( ํ, ์ด, 33 ๋ฐฐ์ด)์ ์ฑ๋ฆฝํ๋์ง ํ์ธํ๊ธฐ ์ํด ๋ฉ์๋๋ก ๋ฐ๋ก ๋นผ๋์๊ณ ,
์ขํ๋ฅผ list์ ์ ์ฅํด์ ์์ด์ ์ด์ฉํ์๋ค.
์์ด์ด๋ผ๊ณ ์๊ฐํ ์ด์ ๋ ๊ฐ๋จํ๊ฒ 3๊ฐ์ง ์กฐ๊ฑด์์์ 9์ค์ 1๊ฐ์ง ์ซ์๋ฅผ ์ ํํด์ผํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์๋ ์๊ด์ด ์๊ณ .
boolean ๋ฐฐ์ด์ ๊ฐ์ง๊ณ 1~9 ๊น์ง ์์ง ์ฐ์ด์ง ์์ ์๋ฅผ ๋ฃ๊ณ ๋ค์ ๋นผ๊ณ ๋ฐฑํธ๋ํน ํ๊ณ ๋ฅผ ๋ฐ๋ณตํด์ ์ต์ ์ ํด๋ฅผ ๊ตฌํด์ฃผ์๋ค.
ํคํฌ์ธํธ !!
๋ฌธ์ ์์ ๊ฐ์ฅ ์ต์์ธ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ผ๊ณ ๋์ด์๋๋ฐ ์ด ๋ถ๋ถ์ ์ฒ์ ์์ด์ ๊ธฐ์ ์กฐ๊ฑด์ ๋ง๋๋ฉด ๋ฐ๋ก ์ถ๋ ฅํด์ ๋๋ด๋๋ก ํ์ฌ ํด๊ฒฐํ์๋ค.
์ด ๋ถ๋ถ์ด ์์ผ๋ฉด ๋ต์ด ์ ๋์ฌ๊ฒ์ด๋ค. ๋ค 0 ์ธ๊ฒฝ์ฐ ํด๊ฐ ๊ณ์ํด์ ๋์จ๋คโฆ ใ