π programmers μ¬νκ²½λ‘ dfs level3
첫 λ²μ§Έ νμ΄κ° μλλ μ΄μ κ° μ¬κ·λ₯Ό ν΅ν΄ λ€λ₯Έ λ¨μ΄λ‘ λ€μ λ€μ΄κ°μΌ νλλ° μ²« λ²μ§Έ κ²½λ‘λ‘λ§ λ€μ΄κ° λ€μ λμ€μ§ λͺ»νλ€.
- 1λ²μ§Έ νμ΄
from collections import defaultdict def solution(tickets): visited, path, stack = [], ["ICN"], ["ICN"] tic = defaultdict(list) for a, b in tickets: tic[a].append(b) for t in tic.values(): t.sort() def dfs(visited, path, stack): # if not stack: # return path start = stack.pop() if start in tic: for i in tic[start]: if (start, i) not in visited: visited.append((start, i)) stack.append(i) path.append(i) dfs(visited, path, stack) print(visited) dfs(visited, path, stack) return path
μ νμ΄λ‘λ ν μ€νΈμΌμ΄μ€ μ λ°λ§ ν΅κ³Ό... λ€λ₯Έ κ²½λ‘λ‘ λ€μ΄κ°μ λμλ€κ° 2 λ²μ§Έ κ²½λ‘λ‘ λ€μ΄κ°μΌνλλ° κ·Έ κ±Έ μ²λ¦¬λ₯Ό λͺ» ν΄μ€¬λ€.
- μ λ΅ νμ΄
from collections import defaultdict def solution(tickets): tic = defaultdict(list) result = [] for key, val in tickets: tic[key].append(val) for i in tic.values(): i.sort(reverse=True) def dfs(city): while tic[city]: dfs(tic[city].pop()) if not tic[city]: result.append(city) return dfs("ICN") return result
π dfsλ μ€νμΌλ‘ ν μ μκ³ , μ¬κ·λ‘ ν μ μλλ° μ§κΈ λ μ¬κ·λ‘ νμλ€.
νμ μ€νμΌλ‘ νΈλκ²λ§ μ΅μν΄μ Έμμ΄ μ¬κ·λ‘ νμ΄λ³΄μλ€.
μ€λμ κ°μλ₯Ό λ£λλΌ μκ°μ΄ λ¦μ΄ λ§μ΄ μκ°μνκ³ νμ΄λ³΄μ§ λͺ»νλ€.
λ΄μΌ λ¬Έμ νλ λ νλ©° μ§κΈ λ¬Έμ λ λ€λ₯Έ λ°©ν₯μΌλ‘ λͺ λ² λ νμ΄λ³΄μμΌκ² λ€.