ν°μ€ν 리 λ·°
λ¬Έμ
λ¬Έμ νμ΄
κ·Έλνλ₯Ό μ, ν, μ’, μ°λ‘ νμνλλ° μνλ²³μ΄ μ€λ³΅λμ§ μλ ν μ΄λν μ μλ€. μ΄λ μ΅λλ‘ μ΄λν μ μλ 거리λ₯Ό κ³μ°νμ¬ λ°ννλ λ¬Έμ μ΄λ€. μ²μμλ κ° κ²½μ°μ λν΄ λͺ¨λ νμνμ¬μΌ νλ€κ³ μκ°νμ¬ λ°±νΈλνΉμ μκ°νλ‘ DFSλ‘ μμ±νμλλ°, νμ΄μ¬μΌλ‘λ ν΅κ³Όν μ μμλ€. λ°λΌμ BFSλ‘ νμλλ° BFS μμ `deque`λ₯Ό μ¬μ©νλ λ©λͺ¨λ¦¬ μ΄κ³Όκ° λ°μνμ¬ λ¬Έμ λ₯Ό ν μ μμλ€.
λ€λ₯Έ μ¬λλ€μ νμ΄λ₯Ό μ°Έκ³ νλ, ν μμ μ€λ³΅λλ μμκ° μμΌλ―λ‘ `deque`, `list`λ³΄λ€ μλκ° λΉ λ₯Έ `set`μ νμ©νμ¬ νμ²λΌ νμ©νλ λ©λͺ¨λ¦¬ λ¬Έμ μ μλ λ¬Έμ λ₯Ό ν΄κ²° ν μ μλ κ² κ°μλ€. μ΄μ μλ λ°±νΈλνΉμ κ²½μ°, DFSκ° νΈνλ€κ³ μκ°νμλλ° BFSμ κ²½μ° νμν κ°μ§λ§ μ΅μ’ μ μΌλ‘ λ»£κ² λλ―λ‘, κ²½μ°μ λ°λΌ ν¨μ¨μ μ΄λΌλ κ²μ μ μ μμλ€.
μ½λ
from sys import stdin
def visitable(x, y, alphabets):
return 0 <= x < r and 0 <= y < c and graph[x][y] not in alphabets
def bfs(start):
global answer
q = set([start])
dirs = ((0, 1), (0, -1), (1, 0), (-1, 0))
while q:
cur_x, cur_y, alphabets = q.pop()
for x, y in dirs:
next_x, next_y = cur_x + x, cur_y + y
if visitable(next_x, next_y, alphabets):
q.add((next_x, next_y, alphabets + graph[next_x][next_y]))
answer = max(answer, len(alphabets) + 1)
if __name__ == '__main__':
answer = 1
r, c = map(int, stdin.readline().split())
graph = [list(stdin.readline().strip()) for _ in range(r)]
bfs((0, 0, graph[0][0]))
print(answer)
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 15644 κ΅¬μ¬ νμΆ 3 (0) | 2020.08.08 |
---|---|
λ°±μ€: 13459 κ΅¬μ¬ νμΆ (0) | 2020.08.07 |
λ°±μ€: 16198 μλμ§ λͺ¨μΌκΈ° (0) | 2020.08.06 |
λ°±μ€: 2580 μ€λμΏ (0) | 2020.08.05 |
λ°±μ€: 16933 λ²½ λΆμκ³ μ΄λνκΈ° 3 (0) | 2020.08.04 |