반응형
LeetCode 문제 해석 및 풀이 방법
문제 17. Letter Combinations of a Phone Number(전화번호의 문자 조합)
난이도 : 중간🟡 바로가기
문제 설명
영문
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.
한글
2-9 까지의 숫자를 포함하는 문자열이 주어지면 숫자가 나타낼 수 있는 모든 가능한 문자 조합 을 반환합니다. 어떤 순서 로든 답을 반환합니다.
숫자에서 문자로의 매핑(전화기 버튼과 마찬가지로)은 사진과 같습니다. 1은 어떤 문자에도 매핑되지 않는다는 점에 유의하세요.
제한조건
- 0 <= digits.length <= 4
- digits[i] is a digit in the range ['2', '9'].
입출력 예
입력 | 출력 |
digits = "23" | ["ad","ae","af","bd","be","bf","cd","ce","cf"] |
digits = "" | [] |
digits = "2" | ["a","b","c"] |
해답 및 해설
파이썬 (Python)
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits) == 0:
return []
elif len(digits) == 1:
num = int(digits)
return ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'][num-2]
last_output = self.letterCombinations(digits[:-1])
new_char = self.letterCombinations(digits[-1])
output = []
for last in last_output:
for char in new_char:
output.append(last+char)
return output
내가 처음에 푼 풀이
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
res = []
digitToChar = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "qprs",
"8": "tuv",
"9": "wxyz",
}
def backtrack(i, curStr):
if len(curStr) == len(digits):
res.append(curStr)
return
for c in digitToChar[digits[i]]:
backtrack(i + 1, curStr + c)
if digits:
backtrack(0, "")
return res
neetcode 로드맵에서의 풀이도 신기해서 가져와봤다.
반응형
'🖥️ 문제 풀이 > 리트코드(Leetcode)' 카테고리의 다른 글
[LeetCode 해석 및 풀이] 746. Min Cost Climbing Stairs(최소 비용 계단 오르기) (0) | 2024.09.17 |
---|---|
[LeetCode 해석 및 풀이] 70. Climbing Stairs(계단 오르기) (0) | 2024.09.17 |
[LeetCode 해석 및 풀이] 131. Palindrome Partitioning(회문 분할) (0) | 2024.09.16 |
[LeetCode 해석 및 풀이] 79. Word Search(단어 검색) (0) | 2024.08.19 |
[LeetCode 해석 및 풀이] 40. Combination Sum II(조합합 II) (0) | 2024.08.07 |
댓글