November 28, 2025
μ«μ λ¬Έμμ΄μ΄ μ£Όμ΄μ§λ©΄ ν΄λΉ μ«μμ λ§€νλ λͺ¨λ κ°λ₯ν λ¬Έμ μ‘°ν©μ λ°νν©λλ€.
μ΄ λ¬Έμ λ λ°±νΈλνΉ(Backtracking) κΈ°λ²μ μ¬μ©νμ¬ ν΄κ²°ν μ μμ΅λλ€. κ° μ«μμ ν΄λΉνλ λ¬Έμλ€μ λ§€νν ν, μ¬κ·μ μΌλ‘ κ°λ₯ν λͺ¨λ μ‘°ν©μ μμ±ν©λλ€.
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if not digits:
return []
graph = {
'2' : "abc",
'3' : "def",
'4' : "ghi",
'5' : "jkl",
'6' : "mno",
'7' : "pqrs",
'8' : "tuv",
'9' : "wxyz",
}
res = []
def backtrack(i,path):
# basecase: built one letter per digit
if i == len(digits):
res.append(path)
return
# recursive step: expand current digit
cur_digit = digits[i]
for ch in graph[cur_digit]:
backtrack(i+1, path+ch)
backtrack(0,"")
return res
Constraints:
1 <= digits.length <= 4
digits[i] is a digit in the range ['2', '9'].