[Baekjoon] 1012. 유기농 배추

2023. 1. 20. 15:48·코딩테스트/Python
728x90
반응형

🔗 Problem Link

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net


❔Thinking

  • 배추밭과 배추의 위치가 주어질 때, 배추를 보호하는 최소한의 배추흰지렁이 수를 반환한다.
  • 배추흰지렁이는 인접한 모든 배추를 보호할 수 있다.

💻Solution

import sys
from collections import deque
input = sys.stdin.readline
dx = [-1,1,0,0]
dy = [0,0,-1, 1]
T = int(input())
for _ in range(T):
    M, N, K = map(int, input().split())
    # 배추밭 생성
    graph = [[0] * M for _ in range(N)]
    # 배추밭 배추 심기
    for _ in range(K):
        y, x = map(int, input().split())
        graph[x][y] = 1
    # bfs정의
    def bfs(x, y):
        q = deque([(x, y)])
        while q:
            x, y = q.popleft()
            for i in range(4):
                nx = x + dx[i]
                ny = y + dy[i]
                if 0<=nx<N and 0<=ny<M and graph[nx][ny] == 1:
                    graph[nx][ny] = 2
                    q.append((nx, ny))
    # 배추흰지렁이 풀기
    cnt = 0
    for i in range(N):
        for j in range(M):
            if graph[i][j] == 1:
                bfs(i, j)
                cnt += 1
    print(cnt)

🗝️keypoint

  1. 배추가 심어진 위치 주위에 모든 배추 위치를 파악하는 bfs 알고리즘을 활용할 수 있다.
  2. bfs에서 해당 위치의 방문처리는, 큐에 append하면서 진행해야 중복 방문을 막을 수 있다.
    • (0,0) (0,1) (1,0) (1,1) 각 위치에 배추가 있을 때 popleft 후에 방문처리를 한다면 (1,0) (1,1)는 다시 방문해야 한다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[Baekjoon] 1389. 케빈 베이컨의 6단계 법칙  (0) 2023.01.30
[Programmers] Level 3. 경주로 건설  (0) 2023.01.20
[Programmers] Level 3. 합승 택시 요금  (0) 2023.01.19
[Programmers] Level 3. 여행경로  (1) 2023.01.18
[Programmers] Level 4. 가사 검색  (0) 2023.01.12
'코딩테스트/Python' 카테고리의 다른 글
  • [Baekjoon] 1389. 케빈 베이컨의 6단계 법칙
  • [Programmers] Level 3. 경주로 건설
  • [Programmers] Level 3. 합승 택시 요금
  • [Programmers] Level 3. 여행경로
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Baekjoon] 1012. 유기농 배추
상단으로

티스토리툴바