728x90
๋ฌธ์
ํ์ด
dfs + ๋ฐฑํธ๋ํน์ผ๋ก ํ์๋ค.
pypy๋ก ์ ์ถ
์ค๋ณต๋ ๋ฌธ์๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด alpha ๋ฐฐ์ด ์์ฑ (alpha[0] = True์ธ ๊ฒฝ์ฐ A์นธ์ ์ง๋ฌ๋ค๋ ์๋ฏธ)
alpha = [False] * 26
ord('A') - 65 ์ด๋ฐ ์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๋ง์ถฐ์ฃผ์๋ค.
๊ทธ ํ ๋ฐฑํธ๋ํน์ ํ๋ค.
์ฝ๋
import sys
input = sys.stdin.readline
r, c = map(int, input().split())
graph = [list(input().rstrip()) for _ in range(r)]
alpha = [False] * 26
dir = ((0, 1), (0, -1), (1, 0), (-1, 0))
ans = 0
def condition(ni, nj):
return ni < 0 or ni >= r or nj < 0 or nj >= c or alpha[ord(graph[ni][nj]) - 65]
def dfs(i, j, cnt):
global ans
ans = max(ans, cnt)
for dx, dy in dir:
ni, nj = i + dy, j + dx
if condition(ni, nj): continue
alpha[ord(graph[ni][nj]) - 65] = True
dfs(ni, nj, cnt + 1)
alpha[ord(graph[ni][nj]) - 65] = False
alpha[ord(graph[0][0]) - 65] = True
dfs(0, 0, 1)
print(ans)
๋ง๋ฌด๋ฆฌ
์ฌ๊ท๋ ๋๋ฌด ์ด๋ ต๋ค...
728x90