알고리즘 문제/LEETCODE

[Python] Letter Combination of a Phone Number

이융희 2021. 5. 6. 02:45
728x90

Medium 난이도 Acceptence 50.1% 문제

 

문재는 핸드폰 번호판에 매핑된 문자를 사용하여 만들 수 있는 모든 문자 조합을 구하는 문제로

먼저, 각 번호를 key 매핑문자를 value로 저장 후, 입력으로 들어온 숫자의 길이에 맞게 순서대로 조합을 생성하여 반환한다.

 

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        mapNum = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        l = len(digits)
        result = []

        if l == 0:
            return result
        if l == 1:
            for a in mapNum.get(digits[0]):
                result.append(a)
        if l == 2:
            for a in mapNum.get(digits[0]):
                for b in mapNum.get(digits[1]):
                    result.append(a+b)
        if l == 3:
            for a in mapNum.get(digits[0]):
                for b in mapNum.get(digits[1]):
                    for c in mapNum.get(digits[2]):
                        result.append(a+b+c)
        if l == 4:
            for a in mapNum.get(digits[0]):
                for b in mapNum.get(digits[1]):
                    for c in mapNum.get(digits[2]):
                        for d in mapNum.get(digits[3]):
                            result.append(a+b+c+d)
        return result