๐ 21736 ๋ฌธ์
์ ๋ ฅ
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋์ฐ์ด๊ฐ ๋ง๋ ์ ์๋ ์ฌ๋์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋จ, ์๋ฌด๋ ๋ง๋์ง ๋ชปํ ๊ฒฝ์ฐ TT๋ฅผ ์ถ๋ ฅํ๋ค.
๐ง ํ์ด
์์ ๋ฌธ์ ๋ ๊ทธ๋ํ ๋ฌธ์ ์ด๋ค.
์บ ํผ์ค์ ํฌ๊ธฐ NxM์ ์ ๋ ฅ ๋ฐ๊ณ , ์บ ํผ์ค ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๋จผ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ ๋ฐ์ผ๋ฉด์ ๋์ฐ์ด๊ฐ ์๋ ๊ณณ์ ์ฐพ์์ผ ํ๋ค.
'I' ๊ฐ ๋์จ ๊ณณ์ ์ฐพ๊ณ , ๊ทธ ์์น๋ฅผ start๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฒฝ์ด ์๋๊ณ , ๋ฐฉ๋ฌธํ์ง ์์ผ๋ฉฐ 'P'์ธ ๊ฒฝ์ฐ์๋ cnt๋ฅผ ์ฆ๊ฐ์ํค๊ณ , 'X'์ธ ๊ฒฝ์ฐ์๋ ๊ฐ์ง ๋ชปํ๋ ๋ค์ ํ์์ ํด์ผํ๋ค.
cnt๊ฐ 0์ด ์๋๋ผ๋ฉด 'TT'๋ฅผ ์ถ๋ ฅํ๋ค.
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
N, M = map(int, input().split())
campus = []
#์
๋ ฅ ๋ฐ์ผ๋ฉด์ ๋์ฐ์ด๊ฐ ์๋ ๊ณณ์ ์ฐพ๊ธฐ
for i in range(N) :
r = list(input().rstrip())
for j in range(M) :
if r[j] == 'I' :
start = [i, j]
campus.append(r)
#์ํ์ข์ฐ ํ์ํ๊ธฐ ์ํจ
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
visited = [[False] * M for _ in range(N)]
cnt = 0
def dfs(x, y) :
global cnt
if 0<=x<N and 0<=y<M and not visited[x][y]:
visited[x][y] = True
if campus[x][y] == 'P' : #์ฌ๋์ด ์๋ ๊ณณ์ด๋ผ๋ฉด
cnt += 1 #cnt ์ฆ๊ฐ
for i in range(4) :
nx = x + dx[i]
ny = y + dy[i]
if 0<=nx<N and 0<=ny<M :
if campus[nx][ny] != 'X' and not visited[nx][ny] :
dfs(nx, ny)
dfs(start[0], start[1])
if cnt > 0 :
print(cnt)
else :
print('TT')
728x90