๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1018)
< ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ >
๋ฌธ์ ํ์ด
๋ณด๋๋ฅผ 8x8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ์๋ผ 'B'๋ก ์์ํ ๋์ 'W'๋ก ์์ํ ๋๋ฅผ ๊ฐ๊ฐ ๊ณ์ฐํ์ฌ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.*;
import java.util.*;
public class _1018_ { // ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
char arr[][] = new char[n][m];
for (int i = 0; i < n; i++) {
String str = bf.readLine();
for (int j = 0; j < m; j++) {
arr[i][j] = str.charAt(j);
}
}
char temp[][] = new char[8][8];
int result = n * m;
for (int i = 0; i <= n - 8; i++) {
for (int j = 0; j <= m - 8; j++) {
for (int x = i; x < i + 8; x++) {
for (int y = j; y < j + 8; y++) {
temp[x - i][y - j] = arr[x][y];
}
}
int cnt = 0;
char c[] = new char[] { 'B', 'W' };
int idx = 0;
for (int x = 0; x < 8; x++) {
if (x % 2 == 0) {
idx = 0;
} else {
idx = 1;
}
for (int y = 0; y < 8; y++) {
if (x % 2 == 0) {
if (temp[x][y] != c[idx++]) {
cnt += 1;
}
if (idx == 2) {
idx = 0;
}
} else {
if (temp[x][y] != c[idx--]) {
cnt += 1;
}
if (idx == -1) {
idx = 1;
}
}
}
}
result = Math.min(result, cnt);
cnt = 0;
for (int x = 0; x < 8; x++) {
if (x % 2 == 0) {
idx = 1;
} else {
idx = 0;
}
for (int y = 0; y < 8; y++) {
if (x % 2 == 0) {
if (temp[x][y] != c[idx--]) {
cnt += 1;
}
if (idx == -1) {
idx = 1;
}
} else {
if (temp[x][y] != c[idx++]) {
cnt += 1;
}
if (idx == 2) {
idx = 0;
}
}
}
}
result = Math.min(result, cnt);
}
}
System.out.println(result);
}
}
๋ณ์)
n, m : ๋ณด๋ ํฌ๊ธฐ
arr : ๋ณด๋ ๊ฐ
str : ๋ณด๋ ์ํ (ํ)
temp : 8x8 ์ฒด์คํ
result : ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์ ์ต์๊ฐ
cnt : ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์
c : ['B', 'W']
idx : index
๋ณด๋์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๋ณด๋์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค. arr๋ฅผ 8x8 ํฌ๊ธฐ๋งํผ ์๋ผ temp ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋ค์ ๊ณผ์ ์ ์ํํ๋ค.
'B'๋ก ์์ํ๋ ๊ฒฝ์ฐ
1) ํ%2๊ฐ 0์ผ ๊ฒฝ์ฐ - idx๋ฅผ 0์ผ๋ก ์ ์ฅํ๋ค.
1-1) c์ idx๊ฐ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด cnt ๊ฐ์ 1 ์ฆ๊ฐํ๋ค.
1-2) idx ๊ฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ idx๋ฅผ 0์ผ๋ก ์ ์ฅํ๋ค.
2) ํ%2๊ฐ 1์ผ ๊ฒฝ์ฐ - idx๋ฅผ 1๋ก ์ ์ฅํ๋ค.
2-1) c์ idx ๊ฐ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด cnt ๊ฐ์ 1 ์ฆ๊ฐํ๋ค.
2-2) idx ๊ฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ idx๋ฅผ 1๋ก ์ ์ฅํ๋ค.
result ๊ฐ์ ํ์ฌ ๊ฐ๊ณผ cnt ๊ฐ ์ค์์ ์ต์๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
'W'๋ก ์์ํ๋ ๊ฒฝ์ฐ
1) ํ%2๊ฐ 0์ผ ๊ฒฝ์ฐ - idx๋ฅผ 1๋ก ์ ์ฅํ๋ค.
1-1) c์ idx๊ฐ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด cnt ๊ฐ์ 1 ์ฆ๊ฐํ๋ค.
1-2) idx ๊ฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ idx๋ฅผ 1๋ก ์ ์ฅํ๋ค.
2) ํ%2๊ฐ 1์ผ ๊ฒฝ์ฐ - idx๋ฅผ 0์ผ๋ก ์ ์ฅํ๋ค.
2-1) c์ idx ๊ฐ๊ณผ ์ผ์นํ์ง ์์ผ๋ฉด cnt ๊ฐ์ 1 ์ฆ๊ฐํ๋ค.
2-2) idx ๊ฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ idx๋ฅผ 0์ผ๋ก ์ ์ฅํ๋ค.
result ๊ฐ์ ํ์ฌ ๊ฐ๊ณผ cnt ๊ฐ ์ค์์ ์ต์๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
์ต์ข result ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ์ ํ์ด ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ 'B'๋ก ์์ํ๋ ๊ฒฝ์ฐ์ 'W'๋ก ์์ํ๋ ๊ฒฝ์ฐ ๋ ์ค์ ํ๋๋ง ๊ตฌํ ํ 64์์ ๊ทธ ๊ฐ์ ๋นผ๋ฉด ๋ค๋ฅธ ํ๋์ ๊ฒฝ์ฐ ๊ฐ์ด ๋์ค๋ ๊ฒ์ ์ ์ ์์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 17103_๊ณจ๋๋ฐํ ํํฐ์ (0) | 2024.04.23 |
---|---|
[Baekjoon] 2251_๋ฌผํต (0) | 2024.04.22 |
[Baekjoon] 10973_์ด์ ์์ด (0) | 2024.04.18 |
[Baekjoon] 10972_๋ค์ ์์ด (0) | 2024.04.17 |
[Baekjoon] 1455_๋ค์ง๊ธฐ II (0) | 2024.04.16 |