[백준] 1012번 유기농 배추 | 파이썬 Python 너비 우선 탐색(BFS)으로 구현

2025. 2. 11. 00:31·코딩테스트 준비/문제풀이

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

 

백준 1012번 유기농 배추 문제 - 너비 우선 탐색(breadth-first search)으로 풀었다.

 

 

문제

 

 

 

설명

 

문제가 길지만 간단히 말하면 섬의 개수를 구하는 문제이다.

1이 상,하,좌,우로 붙어있고 0으로 둘러 싸여있으면 하나의 섬이다.

 

코드는 그래프를 완전 탐색해서 1이 나오면 BFS를 실행한다.

BFS 내에서 섬 전체를 훑어가며 1에서 0으로 바꿔준다.

너비 우선 탐색에 대해 알고 있으면 쉽게 풀리는 문제이지만

혹시 이해가 안간다면 더 쉬운 백준 BFS 문제 2178번 미로 탐색을 추천한다.

 

 

[백준] 2178번 미로 탐색 / 파이썬 python 너비 우선 탐색(bfs) 구현

https://www.acmicpc.net/problem/2178 백준 2178번 미로 탐색 간단한 너비 우선 탐색(bfs)으로 구현이 가능한 문제였다. 너비 우선 탐색(breadth-first search) 알고리즘 특징은 그래프의 완전 탐색 방법 중 하나

hiyani.tistory.com

 

 

코드

 

from collections import deque
import sys
input = sys.stdin.readline

dx = [0,1,0,-1]			# 상, 하, 좌, 우 탐색용
dy = [1,0,-1,0]

def bfs(x, y):
    q = deque()
    q.append((x, y))
    graph[x][y] = 0
    while q:
        x, y = q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or nx >= col or ny < 0 or ny >= row:
                continue
            if graph[nx][ny] != 0:		# 한번 밟은 땅은 1에서 0으로 변경
                graph[nx][ny] = 0
                q.append((nx, ny))

testcase = int(input())
for _ in range(testcase):
    row, col, k = map(int, input().split())
    graph = [[0]*row for _ in range(col)]

    for _ in range(k):
        x, y = map(int, input().split())
        graph[y][x] = 1

    cnt = 0
    for x in range(col):
        for y in range(row):
            if graph[x][y] != 0:
                cnt += 1
                bfs(x, y)
    print(cnt)
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 준비 > 문제풀이' 카테고리의 다른 글

[백준] 1934번 최소공배수 - 유클리드 호제법 풀이 파이썬 Python  (0) 2025.02.14
[백준] 1850번 최대공약수 파이썬 Python / 유클리드 호제법 풀이  (0) 2025.02.14
[백준] 1931번 회의실 배정 | 파이썬 Python 그리디 알고리즘 구현  (0) 2025.02.10
[백준] 2178번 미로 탐색 / 파이썬 python 너비 우선 탐색(bfs) 구현  (0) 2025.02.10
[백준] 1753번 최단경로 / 파이썬 python 다익스트라 알고리즘 구현  (0) 2025.02.10
'코딩테스트 준비/문제풀이' 카테고리의 다른 글
  • [백준] 1934번 최소공배수 - 유클리드 호제법 풀이 파이썬 Python
  • [백준] 1850번 최대공약수 파이썬 Python / 유클리드 호제법 풀이
  • [백준] 1931번 회의실 배정 | 파이썬 Python 그리디 알고리즘 구현
  • [백준] 2178번 미로 탐색 / 파이썬 python 너비 우선 탐색(bfs) 구현
하이야니
하이야니
또 취준..!
  • 하이야니
    하이야니's 스케치
    하이야니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩테스트 준비
        • 알고리즘 개념
        • 문제풀이
      • 파이썬
      • 자바
      • 리눅스
      • C언어
      • 여행
        • 국내
        • 해외
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    거리두기확인하기파이썬
    벨만포드
    프로그래머스거리두기확인하기파이썬
    너비우선탐색파이썬
    백준유클리드호제법
    백준bfs
    거리두기확인하기풀이
    pccp기출문제
    프로그래머스코딩테스트
    pccp기출문제1번
    프로그래머스pccp
    프로그래머스거리두기확인하기
    유클리드호제법파이썬
    프로그래머스거리두기
    다익스트라
    벨만포드음수사이클
    프로그래머스pccp기출문제
    유클리드호제법최대공약수
    프로그래머스파이썬
    벨만포드다익스트라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
하이야니
[백준] 1012번 유기농 배추 | 파이썬 Python 너비 우선 탐색(BFS)으로 구현
상단으로

티스토리툴바