반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
전형적인 BFS 문제입니다.
캠퍼스 내를 너비 우선 탐색해서 만날 수 있는 사람이 몇 명인지 찾아냅니다.
2022.02.23 - [Algorithm] - [Algorithm] 너비 우선 탐색(BFS), 가까운 주변부터 찾자
반응형
3. 코드
from collections import deque
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
campus = []
start = ()
for i in range(N):
row = list(input().rstrip())
for j in range(M): # 시작점 찾기
if row[j] == 'I':
start = (i, j)
campus.append(row)
# BFS
direction = [(1,0), (0,1), (-1,0), (0,-1)]
visited = [[False]*M for _ in range(N)]
res = 0 # 만날 수 있는 사람 수
queue = deque([start])
visited[start[0]][start[1]] = True
while(queue):
x, y = queue.popleft()
for dx, dy in direction:
nx, ny = x+dx, y+dy
# 캠퍼스를 벗어나지 않는 구역이고
if 0<=nx<N and 0<=ny<M:
# 벽이 아니고 방문하지 않은 곳이면 방문
if campus[nx][ny] != 'X' and not visited[nx][ny]:
queue.append((nx, ny))
visited[nx][ny] = True
# 사람이면 +1
if campus[nx][ny] == 'P':
res += 1
print(res if res > 0 else 'TT')
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 28431 양말 짝 맞추기 - 파이썬(Python) (0) | 2023.08.07 |
---|---|
[브루트포스/비둘기집 원리] 백준 20529 가장 가까운 세 사람의 심리적 거리 - 파이썬(Python) (0) | 2023.08.04 |
[구현/수학] 백준 28419 더하기 - 파이썬(Python) (0) | 2023.08.02 |
[구현/수학] 백준 24313 알고리즘 수업 - 점근적 표기 1 - 파이썬(Python) (1) | 2023.07.24 |
[구현/수학] 백준 18110 solved.ac - 파이썬(Python) (0) | 2023.07.24 |
댓글