[백준] 1012번, 유기농 배추 (Python)

2021. 7. 6. 23:29·알고리즘/백준
728x90
반응형

문제

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

 

1012번: 유기농 배추

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

www.acmicpc.net

 

코드

import collections

t = int(input())

def bfs(x,y):
    queue = collections.deque()
    queue.append((x,y))
    dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
    
    while queue:
        x, y = queue.popleft()
        
        # 주변 4방향을 모두 확인한다.
        for i in range(4):
            nx = dx[i] + x
            ny = dy[i] + y
            if 0 <= nx < n and 0 <= ny < m:
                if graph[nx][ny] == 1 and check[nx][ny] == -1:
                    check[nx][ny] = 1
                    queue.append((nx,ny))
    
for i in range(t):
    n, m, k = map(int, input().split())
    graph = [[0]*m for _ in range(n)]
    check = [[-1]*m for _ in range(n)]
    count = 0
    
    for j in range(k):
        x, y = map(int, input().split())
        graph[x][y] = 1
    
    # 배추흰지렁이(값이 1인곳)가 있는곳이고 아직 방문하지 않았을경우 bfs를 시작한다.
    for x in range(n):
        for y in range(m):
            if graph[x][y] == 1 and check[x][y] == -1:
                bfs(x,y)
                count += 1
    print(count)

배추흰지렁이가 있는 영역, 즉 값이 1이고 주변(상하좌우)에 이어진곳을 포함하여 한군데이고 모두 몇군데가 있는지 확인하는 문제이다.

 

좌표방식으로 표현해주기 위해서 graph를 0으로 채워진 이중리스트를 선언하고 1인 x,y를 받아서 0을 1로 바꿔주면된다.

 

값이 1이면서 아직 방문하지 않은곳을 모두 bfs로 돌고 count를 세주면 모두 몇군데가 있는지 찾을 수 있다.

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

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

[백준] 2468번, 안전영역 (Python)  (0) 2021.07.08
[백준] 2667번, 단지번호붙이기 (Python)  (0) 2021.07.08
[백준] 14502번, 연구소 (Python)  (0) 2021.07.06
[백준] 14889번, 스타트와 링크 (Python)  (0) 2021.07.04
[백준] 2309번, 일곱난쟁이 (Python)  (0) 2021.07.02
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 2468번, 안전영역 (Python)
  • [백준] 2667번, 단지번호붙이기 (Python)
  • [백준] 14502번, 연구소 (Python)
  • [백준] 14889번, 스타트와 링크 (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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 1012번, 유기농 배추 (Python)
상단으로

티스토리툴바