[백준|파이썬] 1012: 유기농 배추 (실버2)

2023. 4. 8. 23:19·Problem Solving/백준
반응형
문제

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

 

1012번: 유기농 배추

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

www.acmicpc.net

 

 

🐍파이썬
더보기

실패한 코드

import sys
from collections import deque

t = int(sys.stdin.readline())
for i in range(t):
  m, n, k = map(int, sys.stdin.readline().split())
  baechu = [[0 for _ in range(m)] for _ in range(n)]
 
  for _ in range(k):
    a, b = map(int, sys.stdin.readline().split())
    baechu[b][a] = 1
    
  dx = [-1, 1, 0, 0]
  dy = [0, 0, -1, 1]

  def bfs(x, y):
    queue = deque()
    queue.append((x, y))
    baechu[x][y] = 0
    while queue:
      x, y = queue.popleft()
      for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
        if nx >= m or ny >= n or nx < 0 or ny < 0:
          continue
        if baechu[nx][ny] == 1:
          queue.append((nx, ny))
          baechu[nx][ny] = 0
    return

  cnt = 0
  for i in range(n):
    for j in range(m):
      if baechu[i][j] == 1:
        bfs(i, j)
        cnt += 1
  print(cnt)

BFS

import sys
from collections import deque

def bfs(x, y):
    queue = deque()
    queue.append((x, y))
    baechu[x][y] = 0
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx >= m or ny >= n or nx < 0 or ny < 0:
                continue
            if baechu[nx][ny] == 1:
                baechu[nx][ny] = 0
                queue.append((nx, ny))

t = int(sys.stdin.readline())
for _ in range(t):
    m, n, k = map(int, sys.stdin.readline().split())	#m=가로, n=세로, k=배추갯수
    baechu = [[0 for _ in range(n)] for _ in range(m)]
    
    for _ in range(k):
        a, b = map(int, sys.stdin.readline().split())
        baechu[a][b] = 1
    
    dx = [-1, 1, 0, 0]
    dy = [0, 0, -1, 1]
    
    cnt = 0
    for i in range(m):
        for j in range(n):
            if baechu[i][j] == 1:
                bfs(i, j)	
                cnt += 1	
    print(cnt)

1️⃣ 1로 연결된 지역을 하나의 구역으로 생각한다. 한 구역당 한 마리의 벌레가 필요하다.

2️⃣ 배추밭을 이동하며 값이 1인 지역을 발견하면 해당 지역을 0으로 덮어씌우고 그 지역의 상하좌우의 지역에 1이 있다면 마찬가지로 0으로 덮어씌운다. 연결된 지역을 더 이상 발견할 수 없다면 구역갯수를 체크하고 값이 1인 다른 구역을 찾는다. 이때, 이미 발견되었던 구역은 이미 0으로 덮어씌워졌기 때문에 다음번에 중복체크될 염려가 없다.

3️⃣ 모든 지역에 대한 탐색을 마쳤다면, 체크된 구역의 갯수를 프린트한다.

반응형

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

[백준|파이썬] 25418: 정수 a를 k로 만들기 (실버3)  (0) 2023.04.10
[백준|파이썬] 6186: Best Grass (실버5)  (0) 2023.04.10
[백준|파이썬] 16173: 점프왕 쩰리 (Small) (실버4)  (0) 2023.04.09
[백준|파이썬] 2644: 촌수계산 (실버2)  (0) 2023.04.07
[백준|파이썬] 2178: 미로 탐색 (실버1)  (0) 2023.04.06
[백준|파이썬] 2606: 바이러스 (실버3)  (0) 2023.04.05
'Problem Solving/백준' 카테고리의 다른 글
  • [백준|파이썬] 6186: Best Grass (실버5)
  • [백준|파이썬] 16173: 점프왕 쩰리 (Small) (실버4)
  • [백준|파이썬] 2644: 촌수계산 (실버2)
  • [백준|파이썬] 2178: 미로 탐색 (실버1)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    SWEA
    플러터
    Jiraynor Programming
    자바
    클론 프로젝트
    백준
    프로젝트
    타입스크립트
    구현
    AWS
    Next.js
    공식문서
    뉴렉처
    웹사이트
    spring boot
    강의내용정리
    ZeroCho
    프로그래머스
    블로그 제작
    파이썬
    리액트
    bfs
    React
    자바스크립트
    Til
    mysql
    알고리즘
    컴퓨터네트워크
    포트폴리오
    d3
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[백준|파이썬] 1012: 유기농 배추 (실버2)
상단으로

티스토리툴바