[leetcode] 17. Letter Combinations of a Phone Number

Youn·2021년 8월 4일
0

Algorithm

목록 보기
6/37

문제 설명

링크
휴대폰 키패드에서 숫자들의 조합으로 만들어낼 수 있는 문자열들을 구하는 문제

접근 1 - 순열

  • itertools 의 product 사용
from itertools import product

코드 1

    def letterCombinations(self, digits: str) -> [str]:
        numberToChar = {'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 not digits:
            return []
        item = [numberToChar[k] for k in digits]
        return [''.join(arr) for arr in list(product(*item))]

접근 2 - reduce

  • digits 를 순회하며 해당하는 문자 배열들을 더해주는 방식

코드 2

    def letterCombinations(self, digits: str) -> [str]:
        numberToChar = {'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']}
	cmb = [''] if digits else []
	for d in digits:
	cmb = [p + q for p in cmb for q in dict[d]]
	return cmb
profile
youn

0개의 댓글