π
νμ΄μ¬ μκ³ λ¦¬μ¦ μΈν°λ·°
μ± μ μ°Έκ³ νμ΅λλ€.
2-9κΉμ§μ μ«μλ₯Ό ν¬ν¨νλ λ¬Έμμ΄μ΄ μ£Όμ΄μ§λ©΄ μ«μκ° λνλΌ μμλ κ°λ₯ν λͺ¨λ λ¬Έμ μ‘°ν©μ λ°νν©λλ€. μμμ μμλ‘ λ΅λ³μ λ°ννμμμ€.
ν΄λΉ λ¬Έμ λ μ«μμ ν λΉλ λ¬Έμλ€μ μ΄λ»κ² ννν κ²μΈμ§λ₯Ό μκ°ν΄λ΄μΌ νλ€. λΉμ°ν λμ λ리λ₯Ό ν΅ν΄ μ μ₯ν΄λλ©΄ λλ€.
κ·Έ ν λͺ¨λ λ¬Έμ μ‘°ν©μ ꡬν΄μΌνλ―λ‘ dfsλ₯Ό μ¬μ©νλ€.
dfsμμ λμ΄μ¨ index λΆν° λλ₯Ό μ μλ λ²μκΉμ§ μ«μμ λ¬Έμλ€μ μ νν μ μλ€.
λ¬Έμ νλλ₯Ό μ ννλ©΄ λ€μ λ¬Έμλ₯Ό μ ννκΈ° μν΄ dfsλ‘ λ μ§μ
νλ©° λ€μ λ¬Έμλ₯Ό μ ννκ² λλ€.
μ΄ λ μ€λ³΅λ λ¬Έμλ₯Ό μ ννμ§ μλλ‘ λμ΄μ¨ μΈλ±μ€ μ΄ν λΆν° λ¬Έμλ₯Ό μ ννλλ‘ νλ€.
κ²°κ³Ό κ°μ μ νν λ¬Έμμ κΈΈμ΄κ° μ£Όμ΄μ§ μ«μμ κΈΈμ΄κ° κ°μ λ λ°ν κ°μ μΆκ°νλ€.
class Solution:
# μ’ λ κΉλνκ² μ§€ μ μμ§λ§ μλλ λΉμ·νλ€.
def letterCombinations(self, digits: str) -> List[str]:
def dfs(index, path):
if len(path) == len(digits):
result.append(path)
return
for i in range(index, len(digits)):
for j in dic[digits[i]]:
dfs(i + 1, path + j) # iλ μ‘°ν©μ μν΄ λ¬Έμκ° μ€λ³΅λμ§ μκ² μ νν μ μκ² ν΄μ€.
# path + jλ‘ λκ²ΌκΈ°μ popμ΄λ joinμ ν΄μ€ νμκ° μλ€λ μ₯μ μ΄μλ€.
if not digits:
return []
dic = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "pqrs",
"8": "tuv",
"9": "wxyz",
}
result = []
dfs(0, "")
return result