반응형
리뷰
BFS를 사용하여 풀었다, x, y축 잡는게 아직까진 헷갈리는 것 같다.
문제 풀이
- 테스트 케이스의 수와 방향을 나타낼 리스트를 초기화 해준다.
- m * n크기의 2차원 배열을 0으로 초기화 하고, 방문을 나타낼 배열도 동일한 크기, False로 초기화 해준다.
- 이후 배추의 위치를 받아와 해당 위치를 2차원 배열에 1로 최신화 해준다.
- 이후 배열 전체를 돌며 bfs를 실행해준다.
참고 사항
x와 관련된 행은 n이고 y와 관련된 행은 m이다.
정답 코드
from collections import deque
t = int(input())
dist = [(1, 0), (-1, 0), (0, 1), (0, -1)]
for _ in range(t):
m, n, k = map(int, input().split())
lst = [[0] * m for _ in range(n)]
v = [[False] * m for _ in range(n)]
for _ in range(k):
x, y = map(int, input().split())
lst[y][x] = 1
ans = 0
def bfs(index):
q = deque([index])
v[index[0]][index[1]] = True
while q:
x, y = q.popleft()
for dx, dy in dist:
nx = x + dx
ny = y + dy
if 0 <= nx < n and 0 <= ny < m and not v[nx][ny] and lst[nx][ny]:
v[nx][ny] = True
q.append((nx, ny))
for i in range(n):
for j in range(m):
if not v[i][j] and lst[i][j] == 1:
bfs((i, j))
ans += 1
print(ans)
728x90
반응형
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 7576번 토마토 파이썬, C++ (2) | 2024.07.16 |
---|---|
백준 1697번 숨바꼭질 파이썬 (0) | 2024.07.15 |
SWEA 1979번 D2 어디에 단어가 들어갈 수 있을까 파이썬, C++ (0) | 2024.07.14 |
백준 1213번 팰린드롬 만들기 파이썬 (0) | 2024.07.12 |
백준 1120번 문자열 파이썬 (0) | 2024.07.12 |