Notice
Recent Comments
Link
Today
Total
12-20 18:44
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
관리 메뉴

nayonngme

🔍17. Letter Combinations of a Phone Number - [해시테이블, 문자열, 백트래킹] 본문

Algorithm/leetcode

🔍17. Letter Combinations of a Phone Number - [해시테이블, 문자열, 백트래킹]

nayonng 2024. 11. 9. 04:27

https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/

 

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.

A mapping of digits to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

 

Example 1:

Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]

Example 2:

Input: digits = ""
Output: []

Example 3:

Input: digits = "2"
Output: ["a","b","c"]

 

Constraints:

  • 0 <= digits.length <= 4
  • digits[i] is a digit in the range ['2', '9'].

 

Q.
특정한 숫자가 주어졌을 때,
각각의 숫자버튼으로 표현할 수 있는 모든 알파벳의 조합을 반환해라. 

이때 1은 어떤 문자도 매핑할 수 없다.

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)

    # 예외 처리
    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

 

 


참고

- 파이썬 알고리즘 인터뷰, 340쪽 

'Algorithm > leetcode' 카테고리의 다른 글

🔍401. Binary Watch - [백트래킹, 비트마스킹]  (1) 2024.11.09
Comments