leecom116

제이의 기술 블로그
  • Print (216)
    • Frontend (29)
      • React (3)
      • HTML, CSS (8)
      • JavaScript (11)
      • JQuery (4)
      • JSP (2)
    • Backend (59)
      • Java (31)
      • Spring (11)
      • Spring Boot (0)
      • Python (1)
      • Node.js (1)
      • C, C++ (12)
      • Linux (2)
    • Database (3)
      • MariaDB (0)
      • Oracle (0)
      • MySQL (0)
    • Project (1)
    • Algorithm (67)
      • 백준 (43)
      • 프로그래머스 (0)
      • 이코테 (6)
      • 코드업 (17)
    • Tool (2)
      • Git (1)
      • Log (1)
    • CS (4)
    • Tech Interview (18)
      • Java (9)
      • Web (9)
    • Study (31)
      • 인프런 (3)
      • 정보처리기사 (8)
      • util (4)
      • 쌍용 (14)

깃허브

    https://github.com/leecom116

«   2025/07   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

최근 글

인기 글

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • static메서드
  • 코드업 기초100제
  • C언어 프로젝트
  • 논리 연산자
  • char
  • 메타포어
  • 웹 개발 부트캠프
  • 자바 예외 처리
  • Associate
  • 자바의 정석
  • 델파이 기법
  • 산술 변환
  • 정보공학 방법론
  • JSP
  • 참조형 변수
  • 나선형 모델
  • 코드업
  • HTML
  • 코드업 2차원 배열
  • man month
  • CSS
  • 자바 인터페이스
  • Web Developer
  • c언어
  • 웹개발
  • 의존성 주입
  • 코드업 기초
  • 나도코딩
  • 객체 배열
  • 웹 개발

최근 댓글

hELLO · Designed By 정상우.
leecom116
Algorithm/백준

[백준 1012] 유기농 배추 (Java)

2025. 1. 24. 12:31
import java.io.*;
import java.util.*;

public class Main {
    static int[][] arr;
    static boolean[][] check;

    static int M, N;

    static int count;

    static int[] dx = new int[]{0, 1, 0, -1};
    static int[] dy = new int[]{1, 0, -1, 0};

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;

        int T = Integer.parseInt(br.readLine());

        for(int i=0; i<T; i++) {
            st = new StringTokenizer(br.readLine());

            M = Integer.parseInt(st.nextToken());
            N = Integer.parseInt(st.nextToken());
            int K = Integer.parseInt(st.nextToken());

            arr = new int[N][M];
            check = new boolean[N][M];
            count = 0;

            for(int j=0; j<K; j++) {
                st = new StringTokenizer(br.readLine());

                int X = Integer.parseInt(st.nextToken());
                int Y = Integer.parseInt(st.nextToken());

                arr[Y][X] = 1;
            }

            for(int j=0; j<N; j++) {
                for(int k=0; k<M; k++) {
                    // 배추가 존재하고 탐색을 한 적이 없을 경우, DFS 탐색
                    if(arr[j][k] == 1 && ! check[j][k]) {
                        count++;

                        dfs(k, j);
                    }
                }
            }

            System.out.println(count);
        }
    }

    static void dfs(int x, int y) {
        check[y][x] = true;

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

            // 배추밭 범위 안이고, 이전에 방문 안한 배추일 경우 dfs 재귀 실행
            if((nx>=0 && nx<M && ny>=0 && ny<N)
                    && arr[ny][nx] == 1 && ! check[ny][nx]) {
                dfs(nx,ny);
            }
        }
    }
}
저작자표시 (새창열림)

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

[백준 15652] N과 M (4)  (1) 2025.02.02
[백준 15650] N과 M (2)  (1) 2025.02.01
[백준 9461] 파도반 수열  (0) 2025.01.09
[백준 17626] Four Squares(Java)  (0) 2025.01.07
[백준 2579] 계단 오르기(JAVA)  (4) 2025.01.04
    'Algorithm/백준' 카테고리의 다른 글
    • [백준 15652] N과 M (4)
    • [백준 15650] N과 M (2)
    • [백준 9461] 파도반 수열
    • [백준 17626] Four Squares(Java)
    leecom116
    leecom116

    티스토리툴바