[Gold IV] 1987 - μνλ²³
λ¬Έμ
μΈλ‘ μΉΈ, κ°λ‘ μΉΈμΌλ‘ λ ν λͺ¨μμ 보λκ° μλ€. 보λμ κ° μΉΈμλ λλ¬Έμ μνλ²³μ΄ νλμ© μ ν μκ³ , μ’μΈ‘ μλ¨ μΉΈ ( ν μ΄) μλ λ§μ΄ λμ¬ μλ€.
λ§μ μνμ’μ°λ‘ μΈμ ν λ€ μΉΈ μ€μ ν μΉΈμΌλ‘ μ΄λν μ μλλ°, μλ‘ μ΄λν μΉΈμ μ ν μλ μνλ²³μ μ§κΈκΉμ§ μ§λμ¨ λͺ¨λ μΉΈμ μ ν μλ μνλ²³κ³Όλ λ¬λΌμΌ νλ€. μ¦, κ°μ μνλ²³μ΄ μ ν μΉΈμ λ λ² μ§λ μ μλ€.
μ’μΈ‘ μλ¨μμ μμν΄μ, λ§μ΄ μ΅λν λͺ μΉΈμ μ§λ μ μλμ§λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. λ§μ΄ μ§λλ μΉΈμ μ’μΈ‘ μλ¨μ μΉΈλ ν¬ν¨λλ€.
μ λ ₯
첫째 μ€μ κ³Ό κ° λΉμΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. ( ) λμ§Έ μ€λΆν° κ°μ μ€μ κ±Έμ³μ 보λμ μ ν μλ κ°μ λλ¬Έμ μνλ²³λ€μ΄ λΉμΉΈ μμ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ λ§μ΄ μ§λ μ μλ μ΅λμ μΉΈ μλ₯Ό μΆλ ₯νλ€.
μμ μ λ ₯ 1 볡μ¬
2 4
CAAB
ADCB
μμ μΆλ ₯ 1 볡μ¬
3
μμ μ λ ₯ 2 볡μ¬
3 6
HFDFFB
AJHGDH
DGAGEH
μμ μΆλ ₯ 2 볡μ¬
6
μμ μ λ ₯ 3 볡μ¬
5 5
IEFCJ
FHFKC
FFALF
HFGCF
HMCHH
μμ μΆλ ₯ 3 볡μ¬
10
# νμ΄ λ°©λ²
κΉμ΄ λ€μ΄κ°λ μκ³ λ¦¬μ¦μ΄κΈ° λλ¬Έμ dfs
κ·Έλ¬λ μ¬λ¬ κ²½λ‘ μ€ κΉκ² λ€μ΄κ°μΌ νκΈ° λλ¬Έμ λ°±νΈλνΉ κΈ°λ²μ μ μ©νλ€. μ΄ λΆλΆμ΄ μ΄μ§ λ―Έμν¨
μκ°μ΄κ³Όκ° κ³μ λ μ λκ°νλλ° pypy λ²μ μΌλ‘ λ리λκΉ ν΄κ²°λμλ€.
μμ λ¬Έμ μμλ κΊ λ¬μμ§λ§ cntλ₯Ό ꡬν΄μΌν λλ μΈμλ₯Ό κ°μ΄ λ겨주λκ² μ’λ€
# μ½λ
# 2025-04-14 13:20-37
import sys
sys.stdin = open("input.txt","r")
r, c = map(int,sys.stdin.readline().split())
graph = [list(sys.stdin.readline().strip()) for _ in range(r)]
visited = set()
# μνμ’μ°
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x,y,cnt):
global max_cnt
visited.add(graph[x][y])
max_cnt = max(max_cnt, cnt)
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < r and 0 <= ny < c:
if graph[nx][ny] not in visited:
dfs(nx,ny,cnt+1)
visited.remove(graph[x][y])
max_cnt = 0
dfs(0,0,1)
print(max_cnt)