https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
아이디어
bfs로 풀었다.
배추가 있는 곳의 위치를 미리 알려줘서 좋았다 ㅎㅎㅎ (2중 포문을 안써도 되니까!)
주의할 점은 문제의 (x, y)는 (가로, 세로)이기 때문에 이중리스트에서 해당 위치를 찾을 때는 [y][x]로 찾아야 한다.
전체 코드
from collections import deque
dv = [(0, 1), (0, -1), (1, 0), (-1, 0)]
def bfs(x, y, visited):
queue = deque([(x, y)])
visited[x][y] = 1
while queue:
x, y = queue.popleft()
for dx, dy in dv:
nx = x + dx
ny = y + dy
if 0 <= nx < N and 0 <= ny < M and visited[nx][ny] == 0 and maps[nx][ny] == 1:
visited[nx][ny] = 1
queue.append((nx, ny))
T = int(input())
for _ in range(T):
M, N, K = map(int, input().split())
pos = []
for i in range(K):
pos.append([int(x) for x in input().split()])
maps = [[0] * M for _ in range(N)]
for x, y in pos:
maps[y][x] = 1
visited = [[0] * M for _ in range(N)]
count = 0
for x, y in pos:
if visited[y][x] == 0:
bfs(y, x, visited)
count += 1
print(count)
'Coding Test > Python' 카테고리의 다른 글
[프로그래머스/GREEDY] 구명보트 (level2, python) (0) | 2024.02.04 |
---|---|
[백준/구현] 1268번: 임시 반장 정하기 (브론즈1, python) (0) | 2024.02.02 |
[백준/구현&문자열] 8958번: OX퀴즈 (브론즈2, python) (0) | 2024.02.01 |
[백준/DP] 11057번: 오르막 수 (실버1, python) (1) | 2024.02.01 |
[백준/DP] 2293번 동전1 (골드5, python) (1) | 2024.02.01 |