티스토리 뷰

728x90

https://www.acmicpc.net/problem/21736

 

21736번: 헌내기는 친구가 필요해

2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고

www.acmicpc.net

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from collections import deque
 
 
def bfs(x, y):
    dq = deque()
    dq.append([x, y])
    chk[x][y] = True
    cnt = 0
    while dq:
        x, y = dq.popleft()
        for dx, dy in direction:
            nx, ny = x + dx, y + dy
            if 0 <= nx < N and 0 <= ny < M:
                if m[nx][ny] == 'P' and not chk[nx][ny]:
                    cnt += 1
                    dq.append([nx, ny])
                    chk[nx][ny] = True
                elif m[nx][ny] != 'X' and not chk[nx][ny]:
                    dq.append([nx, ny])
                    chk[nx][ny] = True
    return cnt
 
 
N, M = map(int, input().split())
= []  # O 빈공간 X 벽 I 도연 P 사람
chk = [[False for _ in range(M)] for _ in range(N)]
direction = [(01), (10), (0-1), (-10)]
ix, iy = 00
for i in range(N):
    lst = list(input().rstrip())
    if 'I' in lst:
        ix, iy = i, lst.index('I')
    m.append(lst)
 
res = bfs(ix, iy)
if res == 0:
    print('TT')
else:
    print(res)
cs

 

댓글