[LeetCode] 17. Letter Combinations of a Phone Number

원숭2·2022년 1월 30일
0

LeetCode

목록 보기
21/51

문제

풀이

  1. 각 번호에 해당하는 문자열을 dictionary에 list형태로 대입함.
  2. 문자열의 max가 4이므로, digit의 자릿수가 될 수 있는 경우는 0부터 4까지 총 5가지임.
  3. 각 경우마다 번호에 해당하는 list를 호출 후, product함수를 이용하여 각 list의 모든 조합을 구함.

코드

from itertools import product

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        dial = {2 : ['a', 'b', 'c'], 3 : ['d', 'e', 'f'], 4 : ['g', 'h', 'i'], 5 : ['j', 'k', 'l'], 6 : ['m', 'n', 'o'], 7 : ['p', 'q', 'r', 's'], 8 : ['t', 'u', 'v'], 9 : ['w', 'x', 'y', 'z']}
        
        if digits == "" :
            return []
        elif len(digits) == 1 :
            sub = dial[int(digits)]
            return dial[int(digits)]
        elif len(digits) == 2 :
            sub1 = dial[int(list(digits)[0])]
            sub2 = dial[int(list(digits)[1])]
            return list(map(lambda x : ''.join(x), list(product(sub1, sub2))))
        elif len(digits) == 3 :
            sub1 = dial[int(list(digits)[0])]
            sub2 = dial[int(list(digits)[1])]
            sub3 = dial[int(list(digits)[2])]
            return list(map(lambda x : ''.join(x), list(product(sub1, sub2, sub3))))
        else :
            sub1 = dial[int(list(digits)[0])]
            sub2 = dial[int(list(digits)[1])]
            sub3 = dial[int(list(digits)[2])]
            sub4 = dial[int(list(digits)[3])]
            return list(map(lambda x : ''.join(x), list(product(sub1, sub2, sub3, sub4))))

0개의 댓글