99클럽 코테 스터디 6일차 TIL + 섬의 개수

2025. 4. 8. 03:16·📝 끄적끄적/항해99 코테 스터디

 

- 오늘의 학습 키워드

섬의 개수


- 풀이

import java.util.Scanner;

public class Main {
    static int w, h;
    static int[][] map;
    static boolean[][] visited;

    // 8방향 (상, 하, 좌, 우 + 대각선)
    static int[] dx = {-1, -1, -1, 0, 0, 1, 1, 1};
    static int[] dy = {-1, 0, 1, -1, 1, -1, 0, 1};

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

        while (true) {
            w = sc.nextInt();
            h = sc.nextInt();

            if (w == 0 && h == 0) break;

            map = new int[h][w];
            visited = new boolean[h][w];

            for (int i = 0; i < h; i++) {
                for (int j = 0; j < w; j++) {
                    map[i][j] = sc.nextInt();
                }
            }

            int count = 0;
            for (int i = 0; i < h; i++) {
                for (int j = 0; j < w; j++) {
                    if (map[i][j] == 1 && !visited[i][j]) {
                        DFS(i, j);
                        count++;
                    }
                }
            }
            System.out.println(count);
        }
    }

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

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

            if (nx >= 0 && ny >= 0 && nx < h && ny < w) {
                if (map[nx][ny] == 1 && !visited[nx][ny]) {
                    DFS(nx, ny);
                }
            }

        }
    }
}


- 오늘의 회고

지도 전체를 돌면서 아직 방문하지 않은 땅(1)을 발견하면 DFS를 시작하고, 연결된 모든 땅을 방문 처리한 뒤 섬의 개수를 증가시키는 방식으로 구현했다.

상하좌우뿐 아니라 대각선까지 연결되는 경우까지 해서 방향 배열을 8개 만든 다음 탐색!

확실히 4개, 8개 좌표는 외워 두는 게 좋을 듯 하댜

저작자표시 비영리 (새창열림)

'📝 끄적끄적 > 항해99 코테 스터디' 카테고리의 다른 글

99클럽 코테 스터디 10일차 TIL + 병든 나이트  (0) 2025.04.12
99클럽 코테 스터디 9일차 TIL + 저울  (0) 2025.04.10
99클럽 코테 스터디 8일차 TIL + 한국이 그리울 땐 서버에 접속하지  (0) 2025.04.10
99클럽 코테 스터디 7일차 TIL + 쇠막대기  (0) 2025.04.09
99클럽 코테 스터디 2일차 TIL + 피보나치 비스무리한 수열  (0) 2025.04.02
99클럽 코테 스터디 1일차 TIL + 소수 구하기  (0) 2025.04.01
'📝 끄적끄적/항해99 코테 스터디' 카테고리의 다른 글
  • 99클럽 코테 스터디 8일차 TIL + 한국이 그리울 땐 서버에 접속하지
  • 99클럽 코테 스터디 7일차 TIL + 쇠막대기
  • 99클럽 코테 스터디 2일차 TIL + 피보나치 비스무리한 수열
  • 99클럽 코테 스터디 1일차 TIL + 소수 구하기
현주먹
현주먹
대구 불주먹 출신 현주먹의 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (176)
      • 👶🏻 CS (15)
        • Operating System (7)
        • DB (5)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • DB&JPA (6)
        • Test Code (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (71)
        • 후기 및 회고 (10)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
        • 📖 가상 면접 사례로 배우는 대규모 시스템 설계 .. (9)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL repository
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    코테스터디
    99클럽
    2025스프링캠프
    C
    코딩테스트준비
    개구리책
    jsp
    F-Lab
    오라클
    ==와 equals()
    인프런 특정문자뒤집기
    JPA
    티스토리챌린지
    데브클럽
    에프랩
    개발자취업
    til
    객체지향
    f-lab 후기
    로또 미션
    개발자멘토링
    항해99
    백준
    NextSTEP
    jsp 2.3 웹 프로그래밍: 기초부터 중급까지
    에프랩 후기
    자바의신절판
    오블완
    TDD 클린 코드 with Java
    자바의정석
  • hELLO· Designed By정상우.v4.10.2
현주먹
99클럽 코테 스터디 6일차 TIL + 섬의 개수
상단으로

티스토리툴바