[BOJ] 백준 1926번 : 그림 - Java

2024. 9. 9. 21:16·Algorithm Solving/Java

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

 

DFS 풀이

import java.io.*;
import java.util.*;

public class Main {
    static int n, m;
    
    static int[][] map;
    static boolean[][] visited;
    
    static ArrayList<Integer> result;
    
    static int each = 0;
    static int[] dy = {-1, 1, 0, 0};
    static int[] dx = {0, 0, -1, 1};

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());

        map = new int[n][m];
        visited = new boolean[n][m];

        for (int i=0; i<n; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            for (int j=0; j<m; j++) {
                map[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        result = new ArrayList<Integer>();

        for (int i=0; i<n; i++) {
            for (int j=0; j<m; j++) {
                if (map[i][j] == 1 && !visited[i][j]) {
                    visited[i][j] = true;
                    each = 0;
                    dfs(i, j);
                    result.add(each);
                }
            }
        }

        if (result.size() > 0) {
            Collections.sort(result);
            System.out.println(result.size());
            System.out.println(result.get(result.size()-1));
        }
        else {
            System.out.println(0);
            System.out.println(0);
        }
    }

    static public void dfs(int y, int x) {
        each ++;
        for (int i=0; i<4; i++) {
            int ny = y + dy[i];
            int nx = x + dx[i];

            if (ny>=0 && nx>=0 && ny<n && nx<m) {
                if (map[ny][nx]==1 && !visited[ny][nx]) {
                    visited[ny][nx] = true;
                    dfs(ny, nx);
                }
            }
        }
    }
}
저작자표시 비영리 변경금지 (새창열림)

'Algorithm Solving > Java' 카테고리의 다른 글

[BOJ] 백준 15650번 : N과 M (2) - Java  (0) 2024.09.09
[BOJ] 백준 15649번 : N과 M (1) - Java  (0) 2024.09.09
[BOJ] 백준 2178번 : 미로 탐색 - Java  (0) 2024.09.09
[BOJ] 백준 2667번 : 단지번호붙이기 - Java  (2) 2024.09.09
[BOJ] 백준 1012번 : 유기농 배추 - Java  (0) 2024.09.09
'Algorithm Solving/Java' 카테고리의 다른 글
  • [BOJ] 백준 15650번 : N과 M (2) - Java
  • [BOJ] 백준 15649번 : N과 M (1) - Java
  • [BOJ] 백준 2178번 : 미로 탐색 - Java
  • [BOJ] 백준 2667번 : 단지번호붙이기 - Java
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (146)
      • TIL (Today I Learned) (55)
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    완전탐색
    websocket
    mysql
    백트래킹
    시뮬레이션
    백준
    jpa
    bootstrap
    GROUP BY
    javascript
    CSS
    다이나믹프로그래밍
    join
    jwt
    Google Fonts
    자료구조
    dp
    BFS
    sql
    greedy
    java
    Firebase
    BOJ
    프로그래머스
    HTML
    DFS
    jQuery
    programmers
    Subquery
    그리디
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[BOJ] 백준 1926번 : 그림 - Java
상단으로

티스토리툴바