이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

[실버 3] 백준 1012 - 유기농 배추 (파이썬)

  • 2025.05.17 19:44
  • Programming/백준
글 작성자: pental

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

풀이

  • M x N 밭에 K개의 배추가 심어져 있다.
  • 상하좌우로 인접한 배추는 하나의 그룹으로 간주한다.
  • 이 그룹 수 = 필요한 지렁이 수
  • 목표: 테스트 케이스마다 그룹 수 출력
field = [[0] * M for _ in range(N)]
visited = [[False] * M for _ in range(N)]

field[y][x] 는 배추가 있는 위치를 표시하고, visited 이미 방문한 곳은 다시 탐색하지 않도록 체크한다.

dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]

상, 하, 좌, 우로 이동 할 수 있는 트릭을 작성한다.

def bfs(x, y):
    queue = deque()
    queue.append((x, y))
    visited[y][x] = True

큐를 이용해서 너비 우선 탐색을 진행하고, 배추가 있고, 방문하지 않은 인접한 칸을 계속 탐색한다.

for y in range(N):
    for x in range(M):
        if field[y][x] == 1 and not visited[y][x]:
            bfs(x, y)
            count += 1

모든 칸을 돌면서 아직 방문하지 않은 배추칸에서 BFS를 시작한다.

한번 BFS를 수행할 때마다 그룹 하나를 완탐한다.

코드

# 백준 1012 - 유기농 배추
# 분류 : BFS

from collections import deque

T = int(input())
for _ in range(T) :
    M, N, K = map(int, input().split())

    
    field = [[0] * M for _ in range(N)]
    visited = [[False] * M for _ in range(N)]

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

    dx = [1, -1, 0, 0]
    dy = [0, 0, 1, -1]

    def bfs(x, y) :
        queue = deque()
        queue.append((x, y))
        visited[y][x] = True

        while queue : 
            cx, cy = queue.popleft()
            for i in range(4) :
                nx, ny = cx + dx[i], cy + dy[i]
                if 0 <= nx < M and 0 <= ny < N :
                    if field[ny][nx] == 1 and not visited[ny][nx] :
                        visited[ny][nx] = True
                        queue.append((nx, ny))

    count = 0
    for y in range(N) :
        for x in range(M) :
            if field[y][x] == 1 and not visited[y][x] :
                bfs(x, y)
                count += 1
    
    print(count)

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

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

[실버 2] 백준 1500 - 최대 곱 (파이썬)  (0) 2025.05.18
[브론즈 1] 백준 10448 - 유레카 이론 (파이썬)  (0) 2025.05.16
[실버 3] 백준 23351 - 물 주기 (파이썬)  (1) 2025.05.15
[실버 5] 백준 27111 - 출입 기록 (파이썬)  (0) 2025.05.14
[실버 1] 백준 15903 - 카드 합체 놀이 (파이썬)  (0) 2025.05.13

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [실버 2] 백준 1500 - 최대 곱 (파이썬)

    [실버 2] 백준 1500 - 최대 곱 (파이썬)

    2025.05.18
  • [브론즈 1] 백준 10448 - 유레카 이론 (파이썬)

    [브론즈 1] 백준 10448 - 유레카 이론 (파이썬)

    2025.05.16
  • [실버 3] 백준 23351 - 물 주기 (파이썬)

    [실버 3] 백준 23351 - 물 주기 (파이썬)

    2025.05.15
  • [실버 5] 백준 27111 - 출입 기록 (파이썬)

    [실버 5] 백준 27111 - 출입 기록 (파이썬)

    2025.05.14
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (441) N
    • Forensics (104)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (23)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (7)
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (250) N
      • C (10)
      • Python (11)
      • 백준 (196) N
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 백준
  • 파이썬
  • 포렌식
  • pental
  • axiom
  • 프로그래머스
  • Forensics
  • 디지털포렌식
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바