[백준] 4963번, 섬의 개수 (Python)

2021. 7. 15. 14:36·알고리즘/백준
728x90
반응형

문제

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

 

4963번: 섬의 개수

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도

www.acmicpc.net

 

코드

import collections

while True:
    w, h = map(int, input().split())
    if w == 0 and h == 0:
        break
    graph = [list(map(int,input().split())) for _ in range(h)]
    check = [[False]*w for _ in range(h)]
    
    def bfs(x,y):
        queue = collections.deque()
        queue.append((x,y))
        dx, dy = [-1, 1, 0, 0, -1, -1, 1, 1], [0, 0, -1, 1, -1, 1, -1, 1]
        while queue:
            x, y = queue.popleft()
            for i in range(8):
                nx = x + dx[i]
                ny = y + dy[i]
                if 0 <= nx < h and 0 <= ny < w:
                    if graph[nx][ny] == 1 and check[nx][ny] == False:
                        check[nx][ny] = True
                        queue.append((nx,ny))
    count = 0
    for x in range(h):
        for y in range(w):
            if check[x][y] == False and graph[x][y] == 1:
                bfs(x,y)
                count += 1
    print(count)

섬은 가로, 세로, 대각선으로 이어져있으면 하나의 섬으로 본다.

그래서 dx, dy에 상하좌우 대각선을 포함하여 좌표를 넣어주고 8방면 모두 돌아준다.

 

섬이 이어져 있으면 하나의 섬으로 카운트하기 때문에 bfs 함수 실행횟수와 같게된다.

반응형
저작자표시 (새창열림)

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

[백준] 10026번, 적록색약 (Python)  (0) 2021.07.16
[백준] 2583번, 영역 구하기 (Python)  (0) 2021.07.16
[백준] 11057번, 오르막 수 (Python)  (0) 2021.07.14
[백준] 7562번, 나이트의 이동 (Python)  (0) 2021.07.09
[백준] 2636번, 치즈 (Python)  (0) 2021.07.08
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 10026번, 적록색약 (Python)
  • [백준] 2583번, 영역 구하기 (Python)
  • [백준] 11057번, 오르막 수 (Python)
  • [백준] 7562번, 나이트의 이동 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    orm
    SFlash
    java
    알고리즘
    괄호
    spring
    항해99
    실전프로젝트
    카카오코딩테스트
    항해마켓
    카카오인턴
    버그
    해결
    코딩테스트
    에러
    스파르타코딩클럽
    정리
    SpringBoot
    인프런
    회고
    미니프로젝트
    그리디
    조합
    후기
    프로그래머스
    jpa
    김영한
    파이썬
    백준
    브루트포스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 4963번, 섬의 개수 (Python)
상단으로

티스토리툴바