Algorithm/acmicpc.net

바쁘다 바빠 (#21736 헌내기는 친구가 필요해)

winney916 2024. 7. 5. 09:40
728x90

#21736 헌내기는 친구가 필요해 (https://www.acmicpc.net/problem/21736)

 

 

유난히 바쁜 날이라

만만해보이는 문제로 (class 4 중) 빠르게 풀었다.

 

n, m = map(int, input().split())

campus = []
visited = []
q = []
for i in range(n):
    row = [x for x in input()]
    v = [False for _ in range(m)]
    for j in range(m):
        # O는 빈 공간, X는 벽, I는 도연이, P는 사람이다
        if row[j] == "I":
            q.append([i, j])
            v[j] = True
        elif row[j] == "X":
            v[j] = True
    campus.append(row)
    visited.append(v)

moves = [[-1, 0], [1, 0], [0, 1], [0, -1]]


def is_valid(y, x):
    return (0 <= y < n) and (0 <= x < m)


answer = 0

while q:
    y, x = q.pop(0)
    # print(y, x)
    if campus[y][x] == "P":
        answer += 1
    for my, mx in moves:
        ny, nx = y + my, x + mx
        if is_valid(ny, nx) and not visited[ny][nx]:
            q.append([ny, nx])
            visited[ny][nx] = True

if answer:
    print(answer)
else:
    print("TT")