๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/1018
- MN๊ฐ์ ๋จ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ M×N ํฌ๊ธฐ์ ๋ณด๋๋ฅผ ์ฐพ์๋ค.
- ์ง๋ฏผ์ด๋ ์ด ๋ณด๋๋ฅผ ์๋ผ์ 8×8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
- ์ฒด์คํ์ ๊ฒ์์๊ณผ ํฐ์์ด ๋ฒ๊ฐ์์ ์น ํด์ ธ ์์ด์ผ ํ๋ค.
- ๊ตฌ์ฒด์ ์ผ๋ก, ๊ฐ ์นธ์ด ๊ฒ์์๊ณผ ํฐ์ ์ค ํ๋๋ก ์์น ๋์ด ์๊ณ , ๋ณ์ ๊ณต์ ํ๋ ๋ ๊ฐ์ ์ฌ๊ฐํ์ ๋ค๋ฅธ ์์ผ๋ก ์น ํด์ ธ ์์ด์ผ ํ๋ค.
- ๋ฐ๋ผ์ ์ด ์ ์๋ฅผ ๋ฐ๋ฅด๋ฉด ์ฒด์คํ์ ์์น ํ๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง๋ฟ์ด๋ค. ํ๋๋ ๋งจ ์ผ์ชฝ ์ ์นธ์ด ํฐ์์ธ ๊ฒฝ์ฐ, ํ๋๋ ๊ฒ์์์ธ ๊ฒฝ์ฐ์ด๋ค.
- ๋ณด๋๊ฐ ์ฒด์คํ์ฒ๋ผ ์น ํด์ ธ ์๋ค๋ ๋ณด์ฅ์ด ์์ด์, ์ง๋ฏผ์ด๋ 8×8 ํฌ๊ธฐ์ ์ฒด์คํ์ผ๋ก ์๋ผ๋ธ ํ์ ๋ช ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋ค์ ์น ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
- ๋น์ฐํ 8*8 ํฌ๊ธฐ๋ ์๋ฌด๋ฐ์๋ ๊ณจ๋ผ๋ ๋๋ค. ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ์ฒซ์งธ ์ค์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค.
- N๊ณผ M์ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
- ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ณด๋์ ๊ฐ ํ์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. B๋ ๊ฒ์์์ด๋ฉฐ, W๋ ํฐ์์ด๋ค.
- ์ฒซ์งธ ์ค์ ์ง๋ฏผ์ด๊ฐ ๋ค์ ์น ํด์ผ ํ๋ ์ ์ฌ๊ฐํ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- ์ฒ์์์์ด W์ธ์ง B์ธ์ง ๋๋ ์ ์์ ์ ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ํ์ ํ์๋ฒ์งธ์ ์ง์๋ฒ์งธ, ์ด์ ํ์๋ฒ์งธ์ ์ง์๋ฒ์งธ๋ฅผ ๊ฐ๊ฐ ์กฐํฉํ๊ณ ๊ตฌ๋ถํด์ ํด๋น ์์น์ ๋ง๋ ๋ฌธ์๊ฐ ์์จ๋ค๋ฉด ์นด์ดํธ๋ฅผ ์์ผ 8 * 8 ์ฒด์คํ์ ๋ค ๋์์ ๋ ๋์จ ์นด์ดํธ ์๊ฐ ์ต์๊ฐ๋ณด๋ค ์์ผ๋ฉด ์ต์๊ฐ์ ๊ฐฑ์ ์์ผฐ๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- X
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ1018 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// ์ฒด์คํ์ ๋ฐ๊พธ๋ ์ต์๊ฐ์ ์ ์ฅํ ๋ณ์
int min = Integer.MAX_VALUE;
// ์ฒด์คํ ์ ์ฅ ๋ฐฐ์ด
String board[][] = new String[N][M];
// ์ฒด์คํ์ ์ ์ ์ฅ
for(int i = 0; i < N; i++){
String bw = br.readLine();
for(int j = 0; j < M; j++){
board[i][j] = bw.split("")[j];
}
}
// N์ด 8๋ณด๋ค ์ปค์ ์์์ ์ ์์น๊ฐ ๋ณํ ์๋ ์์ผ๋ฏ๋ก
for(int i = 0; i <= (N - 8); i++){
// M์ด 8๋ณด๋ค ์ปค์ ์์์ ์ ์์น๊ฐ ๋ณํ ์๋ ์์ผ๋ฏ๋ก
for(int j = 0; j <= (M - 8); j++){
// W๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋ ์
int w_s = 0;
// B๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋ ์
int b_s = 0;
// ํ์ด ๋ช๋ฒ์งธ์ธ์ง ์๋ ค์ฃผ๋ ๋ณ์
int r_s = 0;
// ์ด์ด ๋ช๋ฒ์งธ์ธ์ง ์๋ ค์ฃผ๋ ๋ณ์
int c_s = 0;
// ํ์ ์์์ ์ i๋ก ์ง์
for(int k = i; k < i + 8; k++){
// ์ด์ ์์์ ์ j๋ก ์ง์
for(int l = j; l < j + 8; l++){
// ๋ง์ฝ ํ์ด ์ง์๋ฒ์งธ(0ํฌํจ)์ด๊ณ ์ด๋ ์ง์๋ฒ์งธ์ผ๋
if((r_s % 2 == 0) && (c_s % 2 == 0)){
// ํด๋น ๊ฐ์ด W๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("W"))){
// w๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
w_s = w_s + 1;
}
// ํด๋น ๊ฐ์ด B๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("B"))){
// b๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
b_s = b_s + 1;
}
}
// ๋ง์ฝ ํ์ด ํ์๋ฒ์งธ์ด๊ณ ์ด์ด ์ง์๋ฒ์งธ์ผ๋
else if((r_s % 2 == 1) && (c_s % 2 == 0)){
// ํด๋น ๊ฐ์ด B๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("B"))){
// w๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
w_s = w_s + 1;
}
// ํด๋น ๊ฐ์ด W๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("W"))){
// b๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
b_s = b_s + 1;
}
}
// ๋ง์ฝ ํ์ด ์ง์๋ฒ์งธ์ด๊ณ (0ํฌํจ) ์ด์ด ํ์๋ฒ์งธ์ผ๋
else if((r_s % 2 == 0) && (c_s % 2 == 1)){
// ํด๋น ๊ฐ์ด B๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("B"))){
// w๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
w_s = w_s + 1;
}
// ํด๋น ๊ฐ์ด W๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("W"))){
// b๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
b_s = b_s + 1;
}
}
else if((r_s % 2 == 1) && (c_s % 2 == 1)){
// ํด๋น ๊ฐ์ด W๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("W"))){
// w๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
w_s = w_s + 1;
}
// ํด๋น ๊ฐ์ด B๊ฐ ์๋๋ผ๋ฉด
if(!(board[k][l].equals("B"))){
// b๋ก ์์ํ๋ ์ฒด์คํ์์ ๋ฐ๊ฟ์ผ๋๋ ์ + 1
b_s = b_s + 1;
}
}
// ์ด ์นด์ดํธ + 1
c_s = c_s + 1;
}
// ์ด ์นด์ดํธ ์ด๊ธฐํ
c_s = 0;
// ํ ์นด์ดํธ + 1
r_s = r_s + 1;
}
// ์์์ ์ผ ์นด์ดํธ๋ค๋ก ์ต์๊ฐ ๊ฐฑ์
if(w_s < min){
min = w_s;
}
if(b_s < min){
min = b_s;
}
}
}
System.out.println(min);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 2164 ์นด๋2 (0) | 2024.07.18 |
---|---|
[Java] BOJ 1920 ์ ์ฐพ๊ธฐ (0) | 2024.07.17 |
[Java] BOJ 11866 ์์ธํธ์ค ๋ฌธ์ 0 (0) | 2024.07.17 |
[Java] BOJ 11651 ์ขํ ์ ๋ ฌํ๊ธฐ 2 (0) | 2024.07.16 |
[Java] BOJ 11650 ์ขํ ์ ๋ ฌํ๊ธฐ (0) | 2024.07.16 |