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

공지사항

인기 글

태그

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

dj0998

백준 1926 그림(Java)
백준

백준 1926 그림(Java)

2023. 2. 19. 15:57

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

 

1926번: 그림

어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;

public class Main {

  static int count;
  static int n;
  static int m;
  static int[] dx = {1, -1, 0, 0};
  static int[] dy = {0, 0, -1, 1};
  static int[][] arr;
  static boolean[][] visit;
  static ArrayList<Integer> list = new ArrayList<>();

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

    n = sc.nextInt();
    m = sc.nextInt();
    arr = new int[n][m];
    visit = new boolean[n][m];
    boolean check = false;
    
    for(int i = 0; i < n; i++) {
      for(int j = 0; j < m; j++) {
        int num = sc.nextInt();;
        arr[i][j] = num;
        if(num == 1) check = true;
      }
    }

    if(check == false) {
      System.out.println(0);
      System.out.println(0);
      return;
    }

    for(int i = 0; i < n; i++) {
      for(int j = 0; j < m; j++) {
        if(arr[i][j] != 0 && visit[i][j] == false) {
          count = 0;
          dfs(i, j);
          list.add(count);
        }
      }
    }

    Collections.sort(list);

    System.out.println(list.size());
    System.out.println(list.get(list.size() - 1));
  }

  public static void dfs(int a, int b) {
    visit[a][b] = true;
    count++;
    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 < m && arr[x][y] != 0 && visit[x][y] == false) dfs(x, y);
    }
  }
  
}

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

백준 12852 1로 만들기 2(Java)  (0) 2023.02.19
백준 1325 효율적인 해킹(Java)  (0) 2023.02.19
백준 2529 부등호(Java)  (0) 2023.02.19
백준 2504 괄호의 값(Java)  (0) 2023.02.19
백준 1890 점프(Java)  (0) 2023.02.18
    '백준' 카테고리의 다른 글
    • 백준 12852 1로 만들기 2(Java)
    • 백준 1325 효율적인 해킹(Java)
    • 백준 2529 부등호(Java)
    • 백준 2504 괄호의 값(Java)
    Park DJ
    Park DJ

    티스토리툴바