Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 10026] 적록색약 본문
반응형
탐색을 여러번 할뿐 컴포넌트 개수를 세는건 여타 기본 DFS 문제와 똑같다.
필자는 R, G, B 탐색 후 R, G 는 같은 값으로 배열을 채워 넣어 풀었다.
public class Main {
static int n;
static String a[][];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
a = new String[n][n];
for(int i=0; i<n; i++) {
String rgb = sc.next();
for(int j=0; j<n; j++) {
a[i][j] = String.valueOf(rgb.charAt(j));
}
}
int p1 = 0;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(a[i][j].equals("R")) {
dfs(i, j, "R");
p1++;
} else if(a[i][j].equals("G")) {
dfs(i, j, "G");
p1++;
} else if(a[i][j].equals("B")) {
dfs(i, j, "B");
p1++;
}
}
}
int p2 = 0;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(a[i][j].equals("0")) {
dfs(i, j, "0");
p2++;
} else if(a[i][j].equals("1")) {
dfs(i, j, "1");
p2++;
}
}
}
System.out.println(p1 + " " + p2);
sc.close();
}
public static void dfs(int x, int y, String rgb) {
int mx[] = {0, 1, 0, -1};
int my[] = {1, 0, -1, 0};
for(int i=0; i<4; i++) {
int nx = x + mx[i];
int ny = y + my[i];
if(0 <= nx && nx < n && 0 <= ny && ny < n) {
if(rgb.equals("R")) {
a[x][y] = "0";
if(!a[nx][ny].equals("R") && i < 3) continue;
if(!a[nx][ny].equals("R") && i == 3) return;
} else if(rgb.equals("G")) {
a[x][y] = "0";
if(!a[nx][ny].equals("G") && i < 3) continue;
if(!a[nx][ny].equals("G") && i == 3) return;
} else if(rgb.equals("B")) {
a[x][y] = "1";
if(!a[nx][ny].equals("B") && i < 3) continue;
if(!a[nx][ny].equals("B") && i == 3) return;
} else if(rgb.equals("0")) {
a[x][y] = "-1";
if(!a[nx][ny].equals("0") && i < 3) continue;
if(!a[nx][ny].equals("0") && i == 3) return;
} else if(rgb.equals("1")) {
a[x][y] = "-1";
if(!a[nx][ny].equals("1") && i < 3) continue;
if(!a[nx][ny].equals("1") && i == 3) return;
}
dfs(nx, ny, rgb);
}
}
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 2468] 안전 영역 (0) | 2019.04.10 |
---|---|
[백준 11403] 경로 찾기 (0) | 2019.04.10 |
[백준 2583] 영역 구하기 (0) | 2019.04.09 |
[백준 2667] 단지번호붙이기 (0) | 2019.04.09 |
[백준 1743] 음식물 피하기 (0) | 2019.04.09 |
Comments