Published:
Updated:

  • Reference
  • print(element + c)๋ฅผ ์ฐ์–ด ๋ด์•ผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง
    • DFS ์–ด๋ ต๋‹ค!!


Solution

from typing import List


class Solution:
    # ์กฐํ•ฉ ๋ฌธ์ œ๋‹ˆ ์ˆœ์„œ ๊ณ ๋ ค X
    def letterCombinations(self, digits: str) -> List[str]:
        answer = []
        # '1'์ด๋ž‘ '0'์€ ๋งŒ๋“ค์–ด์ค„ ํ•„์š”๊ฐ€ ์—†์Œ (์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์•ˆ ํ•ด์ค˜๋„ ๋˜๋„๋ก ๋ฌธ์ œ์—์„œ ์ œ์‹œ)
        digits_map = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}

        # (0 <= digits.length <= 4) -> ์žฌ๊ท€๋กœ ํ‘ธ๋Š” ๊ฒŒ ๋” ํšจ๊ณผ์ ์ผ ๋“ฏ
        def dfs(index: int, element: str) -> None:
            # ๋๊นŒ์ง€ ํƒ์ƒ‰ -> ๋ฐฑํŠธ๋ž˜ํ‚น
            if len(digits) == len(element):
                answer.append(element)
                return

            for i in range(index, len(digits)):
                # ํ•œ ์ž๋ฆฌ์ˆ˜์˜ ์ˆซ์ž(ex. digits_map['2'])์— ๋Œ€ํ•œ string(ex. 'abc')
                for c in digits_map[digits[i]]:
                    print(element + c)
                    dfs(i + 1, element + c)

        if not digits:
            return []

        dfs(0, '')

        return answer

Leave a comment