티스토리 뷰
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
1. 문제 내용
2. 접근 방식
- 배추가 심어져 있는 땅을 입력받는다.
maps 2차원 리스트를 모두 0으로 초기화한 다음에, 배추가 심어져 있는 장소를 1로 바꾸면 된다. 또한 배추가 심어져 있는 땅, 즉 1인 칸의 위치를 알고 있기 때문에 아직 방문하지 않은 배추가 심어진 땅을 대상으로만 bfs( ) 메서드를 실행하면 된다.
3. 정답 코드
from collections import deque
def make_maps(ks):
graph = [[0] * n for _ in range(m)]
for v in ks:
graph[v[0]][v[1]] = 1
return graph
def bfs(i, j):
visited[i][j] = True
queue = deque([[i, j]])
while queue:
x, y = queue.popleft()
for d in directions:
dx = x + d[0]
dy = y + d[1]
if dx >= m or dx < 0 or dy >= n or dy < 0:
continue
if not visited[dx][dy] and maps[dx][dy]:
visited[dx][dy] = True
queue.append([dx, dy])
return 1
t = int(input())
for test_case in range(1, t + 1):
m, n, k = map(int, input().split())
data = [list(map(int, input().split())) for _ in range(k)]
maps = make_maps(data)
visited = [[False] * n for _ in range(m)]
directions = [[-1, 0], [1, 0], [0, -1], [0, 1]]
results = 0
for pair in data:
if not visited[pair[0]][pair[1]]:
results += bfs(pair[0], pair[1])
print(results)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 11724번 연결 요소의 개수 파이썬 정답 코드 (0) | 2023.05.24 |
---|---|
[백준] 7576번 토마토 파이썬 정답 코드 (0) | 2023.05.24 |
[백준] 2667번 단지번호 붙이기 파이썬 정답 코드 (0) | 2023.05.23 |
[백준] 2178번 미로 탐색 파이썬 정답 코드 (0) | 2023.05.23 |
[백준] 1003번 피보나치 함수 파이썬 정답 코드 (0) | 2023.05.21 |