*문제 출처는 백준에 있습니다.
문제 제목: 유기농 배추 / 1012번 (실버 2단계)
문제 사이트: https://www.acmicpc.net/problem/1012
문제 설명
나의 풀이
from collections import deque
# 테스트 케이스
T = int(input())
def earthworm(napa_cabbage, visit, m, n):
answer = 0
# 상하좌우로 움직이기
move = [(0, 1), (0, -1), (1, 0), (-1, 0)]
for i in range(n):
for j in range(m):
if not visit[i][j] and napa_cabbage[i][j] == 1:
q = deque([(i, j)])
visit[i][j] = True
# 배추를 찾으면 상하좌우에 배추가 있는지 확인 후 퍼트린다
while q:
iy, ix = q.popleft()
for ny, nx in move:
y = iy + ny
x = ix + nx
if 0 <= y < n and 0 <= x < m:
# 배추가 더 있는지 확인
if napa_cabbage[y][x] == 1 and visit[y][x] == False:
visit[y][x] = True
q.append((y, x))
answer += 1
elif not visit[i][j] and napa_cabbage[i][j] == 0:
visit[i][j] = True
return answer
def main():
for _ in range(T):
m, n, k = map(int, input().split())
# 배추 심기
napa_cabbage = [[0] * m for _ in range(n)]
# 방문 체크
visited = [[False] * m for _ in range(n)]
for _ in range(k):
a, b = map(int, input().split())
napa_cabbage[b][a] = 1
print(earthworm(napa_cabbage, visited, m, n))
main()
※ 알아야 할 것
main함수가 아닌 전역변수를 입력 받으니깐 다른 함수에서 이름이 충돌이 발생하는 변수 섀도잉 (Variable Shadowing)이 발생해서 main함수를 따로 설정했다.
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 미로 탈출하기 / 17090번 / Python (0) | 2024.12.02 |
---|---|
백준 / 포도주 시식 / 2156번 / Python (1) | 2024.11.29 |
백준 / 로프 / 2217번 / Python (0) | 2024.11.25 |
백준 / 설탕 배달 / 2839번 / Python (0) | 2024.11.23 |
백준 / A - > B / 16953번 / Python (0) | 2024.11.22 |