[λ°±μ€] 21736 νλ΄κΈ°λ μΉκ΅¬κ° νμν΄ (python νμ΄μ¬)
21736λ²: νλ΄κΈ°λ μΉκ΅¬κ° νμν΄
2020λ μ μ νν νλ΄κΈ° λμ°μ΄κ° μλ€. λμ°μ΄λ λΉλλ©΄ μμ λλ¬Έμ νκ΅μ κ°μ§ λͺ»ν΄ νκ΅μ μλ μΉκ΅¬κ° μμλ€. λλμ΄ λλ©΄ μμ μ νκ² λ λμ°μ΄λ μ΄μ μΊ νΌμ€ λ΄μ μ¬λλ€κ³Ό μΉν΄μ§κ³
www.acmicpc.net
νλ²ν κ·Έλν νμ λ¬Έμ .
μμ΄λμ΄
bfs λλ dfsλ₯Ό νμ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νλ©΄ λλ€.
1. κ·Έλν μμμ§μ 'I'λ μΊ νΌμ€ μ 보λ₯Ό λ°μμ¬ λ 미리 μ°Ύμλ μ μλ€.
2. λΉκ³΅κ° λΏμλλΌ μ¬λμ΄ μλ μ§μ 'P'λ μ΄λ κ°λ₯νλ€.
3. μ λ΅μ μΆλ ₯ν λ, λ΅μ΄ 0λͺ μ΄λ©΄ 0μ΄ μλ "TT"λ₯Ό μΆλ ₯ν΄ μ£Όμ.
μ 체 μ½λ
from collections import deque
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
campus = [] # μΊ νΌμ€ μ 보λ₯Ό λ΄λ 리μ€νΈ
ix, iy = 0, 0 # μ΅μ΄ μμ μμΉμ μ’ν ix, iy
answer = 0 # λ§λ μ μλ μ¬λμ μ, μΆλ ₯κ°
N, M = map(int, input().split()) # μΊ νΌμ€ ν¬κΈ° μ
λ ₯
for i in range(N):
campus.append(list(input()))
for j in range(M):
if campus[i][j] == 'I': # μμ μμΉ μ°ΎκΈ°
ix, iy = i, j
visited = [[0] * M for _ in range(N)] # λ°©λ¬Έ μ 보λ₯Ό λ΄λ 리μ€νΈ
deq = deque()
deq.append([ix, iy]) # μ΅μ΄ μμ μμΉ insert
while deq: # νκ° λΉ λκΉμ§
x, y = deq.popleft()
for i in range(4): # μνμ’μ° νμ
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < N and 0 <= ny < M and visited[nx][ny] == 0: # λ°©λ¬Έ μνμΌλ©΄
visited[nx][ny] = 1 # λ°©λ¬Έ νμ
if campus[nx][ny] == 'O': # λΉ κ³΅κ° μ΄λ©΄
deq.append([nx, ny])
elif campus[nx][ny] == 'P': # μ¬λ μ΄λ©΄
deq.append([nx, ny])
answer += 1 # λ§λ μ¬λ μ μ¦κ°
print('TT' if answer == 0 else answer) # μ λ΅ μΆλ ₯
μ½λ μ€λͺ
for i in range(N):
campus.append(list(input()))
for j in range(M):
if campus[i][j] == 'I': # μμ μμΉ μ°ΎκΈ°
ix, iy = i, j
μΊ νΌμ€ μ 보λ₯Ό μ λ ₯λ°μΌλ©΄μ μμ μμΉλ₯Ό 미리 μ°Ύμλ€.
deq = deque()
deq.append([ix, iy]) # μ΅μ΄ μμ μμΉ insert
while deq: # νκ° λΉ λκΉμ§
x, y = deq.popleft()
for i in range(4): # μνμ’μ° νμ
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < N and 0 <= ny < M and visited[nx][ny] == 0: # λ°©λ¬Έ μνμΌλ©΄
visited[nx][ny] = 1 # λ°©λ¬Έ νμ
if campus[nx][ny] == 'O': # λΉ κ³΅κ° μ΄λ©΄
deq.append([nx, ny])
elif campus[nx][ny] == 'P': # μ¬λ μ΄λ©΄
deq.append([nx, ny])
answer += 1 # λ§λ μ¬λ μ μ¦κ°
μ΅μ΄ μμ μμΉλ₯Ό κΈ°μ€μΌλ‘ bfsνμμ νλ€. μΊ νΌμ€ ν¬κΈ°μ λ¬Έμ 쑰건μ λ§κ² ifλ¬Έμ μμ±ν΄ μ€λ€.