Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 14582
  • 백준 2591
  • 백준 12871
  • 백준 10709
  • Java
  • 백준 1747
  • 자바
  • 백준 15961
  • 백준 1064
  • 백준 2225
  • 백준 1531
  • 백준 12605
  • 백준 3049
  • 백준 6550
  • 백준 3135
  • 백준 16926
  • 백준 7662
  • 백준 1011
  • 백준 4659
  • 백준 1495
  • 백준 24039
  • 백준 16194
  • 백준 15312
  • 백준 1914
  • 백준 15655
  • 백준 7567
  • 백준
  • 백준 8892
  • 백준 2467
  • 백준 2343
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 10026 적록색약(Java)
백준

백준 10026 적록색약(Java)

2023. 2. 25. 14:33

https://www.acmicpc.net/problem/10026

 

10026번: 적록색약

적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;

public class Main {

  static int n;
  static int[] dx = {1, -1, 0, 0};
  static int[] dy = {0, 0, -1, 1};
  static char[][] arr;
  static boolean[][] visit;
  static StringBuilder sb = new StringBuilder();

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int count1 = 0;
    int count2 = 0;
    n = sc.nextInt();
    arr = new char[n][n];
    visit = new boolean[n][n];
    
    for(int i = 0; i < n; i++) {
      String str = sc.next();
      for(int j = 0; j < n; j++) {
        arr[i][j] = str.charAt(j);
      }
    }

    for(int i = 0; i < n; i++) {
      for(int j = 0; j < n; j++) {
        if(visit[i][j] == false) {
          count1++;
          dfs(i, j);
        }
      }
    }

    sb.append(count1+" ");
    visit = new boolean[n][n];

     for(int i = 0; i < n; i++) {
      for(int j = 0; j < n; j++) {
        if(arr[i][j] == 'G') arr[i][j] = 'R';
      }
    }

    for(int i = 0; i < n; i++) {
      for(int j = 0; j < n; j++) {
        if(visit[i][j] == false) {
          count2++;
          dfs(i, j);
        }
      }
    }

    sb.append(count2);

    System.out.println(sb);
  }

  public static void dfs(int a, int b) {
    visit[a][b] = true;
    for(int i = 0; i < 4; i++) {
      int x = a + dx[i];
      int y = b + dy[i];
      if(x >= 0 && x < n && y >= 0 && y < n && visit[x][y] == false && arr[x][y] == arr[a][b]) dfs(x, y);
    }
  }
}

'백준' 카테고리의 다른 글

백준 9251 LCS(Java)  (0) 2023.02.26
백준 7569 토마토(Java)  (0) 2023.02.26
백준 15312 이름 궁합(Java)  (0) 2023.02.25
백준 1011 Fly me to the Alpha Centauri(Java)  (0) 2023.02.24
백준 12865 평범한 배낭(Java)  (0) 2023.02.24
    '백준' 카테고리의 다른 글
    • 백준 9251 LCS(Java)
    • 백준 7569 토마토(Java)
    • 백준 15312 이름 궁합(Java)
    • 백준 1011 Fly me to the Alpha Centauri(Java)
    Park DJ
    Park DJ

    티스토리툴바