개발 공부 기록
Published 2022. 3. 11. 20:58
백준 1743 자바 풀이 알고리즘/백준
728x90

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

 

1743번: 음식물 피하기

첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다.  그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다

www.acmicpc.net

DFS를 통해서 풀어보자.

visit 체크를 하며 방문하지 않은 정점에 대해 방문하고 이어져 있는 정점의 개수를 세도록 했다. 그 중 제일 많은 것에 대해 출력한다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class bj1743_인접행렬 {

    static int N, M, K;
    static int cnt;
    static int[][] map;
    static boolean[][] visit;
    static int[] dx = { -1, 1, 0, 0 };
    static int[] dy = { 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());
        K = Integer.parseInt(st.nextToken());

        map = new int[N][M];
        visit = new boolean[N][M];

        int answer = 0;
        String[] tmp;

        //이중 포문 안돌리려고 노력함..
        for(int i = 0; i < K; i ++) {
            tmp = br.readLine().split(" ");
            map[Integer.parseInt(tmp[0]) - 1][Integer.parseInt(tmp[1]) - 1] = 1;
        }

        for(int i = 0; i < N; i ++) {
            for(int j = 0; j < M; j ++) {
                if(!visit[i][j] && map[i][j] == 1) {
                    cnt = 0;
                    DFS(i, j);
                    answer = Math.max(answer, cnt);
                }
            }
        }

        System.out.println(answer);

    }

    private static void DFS(int x, int y) {
        visit[x][y] = true;
        cnt ++;

        for(int i = 0; i < dx.length; i ++) {
            int nx = x + dx[i];
            int ny = y + dy[i];

            if(nx < N && nx >= 0 && ny < M && ny >= 0 && !visit[nx][ny] && map[nx][ny] == 1) {
                DFS(nx, ny);
            }
        }
    }
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 12851 자바 풀이  (0) 2022.03.22
백준 16953 자바 풀이  (0) 2022.03.11
백준 2178 자바 풀이  (0) 2022.03.11
백준 1303 자바 풀이  (0) 2022.03.10
백준 2501 자바 풀이  (0) 2022.03.08
profile

개발 공부 기록

@찐만두

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!