๋ฐ์ํ
https://www.acmicpc.net/problem/10026
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static char Grid[][]; // ๊ทธ๋ฆฌ๋ ๋งต
static boolean visit[][]; // ๋ฐฉ๋ฌธ ์ฒดํฌ
static int[] dx = {0, -1, 0, 1}; // ์ํ์ข์ฐ x
static int[] dy = {-1, 0, 1, 0}; // ์ํ์ข์ฐ y
static int N; // ๊ทธ๋ฆฌ๋์ ํฌ๊ธฐ
static int notRGB = 0; // ์ ๋ก์์ฝ ์๋ ์ฌ๋์ด ๋ดค์๋
static int RGB = 0; // ์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ดค์๋
// <- , ↑ , -> , ↓ ... ๋์๋จ๋ถ 4๋ฐฉํฅ ์ฒดํฌํด๊ฐ๋ฉฐ dfs ๋๋ฆฌ๊ธฐ
public static void dfs(int x, int y) {
visit[x][y] = true; // ํ์ฌ ์์น ๋ฐฉ๋ฌธ์ฒดํฌ
char color = Grid[x][y]; // ํ์ฌ ์ ์ ์ฅ
for(int i=0; i<4; i++) { // ์ํ์ข์ฐ ์ฒดํฌ
int nx = x + dx[i];
int ny = y + dy[i];
if(nx>=0 && ny>=0 && nx<N && ny<N) {
// ์ํ์ข์ฐ์ค ๊ฐ์์์ ์ฝ์ด๊ณ ๋ฐฉ๋ฌธํ์ง ์์๊ณณ -> ๋๊น์ง ํ์
if(Grid[nx][ny] == color && !visit[nx][ny]) {
dfs(nx, ny);
}
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(bf.readLine());
Grid = new char[N][N];
visit = new boolean[N][N];
for(int i=0; i<N; i++) {
String str = bf.readLine();
for(int j=0; j<N; j++) {
Grid[i][j] = str.charAt(j);
}
}
// ์ ๋ก์์ฝ์ด ์๋ ์ฌ๋์ด ๋ดค์๋ ๊ตฌ์ญ์ ๊ฐฏ์ ๊ตฌํ๊ธฐ
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
if(!visit[i][j]) {
dfs(i, j);
notRGB ++;
}
}
}
// ์ ๋ก์์ฝ์ธ ์ฌ๋์ ๊ฒฝ์ฐ -> ๋นจ๊ฐ์๊ณผ ์ด๋ก์์ ์ฐจ์ด๋ฅผ ๋๋ผ์ง ๋ชปํ๋ฏ๋ก ๋์ผํ๊ฒ ๋ด.
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
if(Grid[i][j] == 'G') // ์ด๋ก -> ๋นจ๊ฐ์ผ๋ก ๋ณ๊ฒฝ
Grid[i][j] = 'R';
}
}
visit = new boolean[N][N]; // ๋ฐฉ๋ฌธํ์ ์ด๊ธฐํ
// ์ ๋ก์์ฝ์ธ ์ฌ๋์ด ๋ดค์๋ ๊ตฌ์ญ์ ๊ฐฏ์ ๊ตฌํ๊ธฐ
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
if(!visit[i][j]) {
dfs(i, j);
RGB ++;
}
}
}
System.out.println(notRGB + " " + RGB);
bf.close();
}
}
ํ์ด
์ ๋ก์์ฝ -> ๋นจ๊ฐ์๊ณผ ์ด๋ก์์ ์ฐจ์ด๋ฅผ ๋๋ผ์ง๋ชปํด์ ๋นจ๊ฐ์, ์ด๋ก์์ ๋์ผํ๊ฒ ๋ณด๊ณ ์ฒดํฌํ๋ค.
๊ทธ๋์ ๋ฐฐ์ด์ 0์ด๋ 1์ ๊ฐ๋ง ๋ค์ด๊ฐ๋๋ฐ ์ด ๋ฌธ์ ๋ RGB 3๊ฐ์ ๋ฌธ์๊ฐ ๋ค์ด๊ฐ๋ค.
์ฌ๊ทํธ์ถ์ ํตํด ์ํ์ข์ฐ์ ๊ฐ์ค ํ์ฌ์ ๋ฌธ์์ ๋์ผํ๊ฒฝ์ฐ ๋๊น์ง ํ์์ ํ๋ค.
main() ํจ์์์ ๋ฐฉ๋ฌธ๋์ง ์์๊ณณ์ dfsํจ์๋ฅผ ํธ์ถํ๊ณ , ํด๋น ์์ญ์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ๋๊น์ง ํ์ํ๋ฉด์ ๋์ด์ ํ์ํ ์ ์๋ ๋ถ๋ถ์์๋ ๊ตฌ์ญ์ ๊ฐฏ์๋ฅผ +1์ฉ ํด์ค๋ค.
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10709๋ฒ: ๊ธฐ์์บ์คํฐ(๊ตฌํ) (0) | 2020.04.07 |
---|---|
[๋ฐฑ์ค] 1021๋ฒ: ํ์ ํ๋ ํ (0) | 2020.04.07 |
[Codeforces] 1136A: Nastya is Reading a Book (0) | 2020.04.06 |
[Codeforces] 1093A: Dice Rolling (0) | 2020.04.02 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์(Stack, 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ) (2) | 2020.03.31 |
๋๊ธ