문제
LeetCode 17. Letter Combinations of a Phone Number
https://leetcode.com/problems/letter-combinations-of-a-phone-number/
언어
자바스크립트(JavaScript)
접근 방법
- 배열의 총크기를 구한다.
- 나중에 누르는 숫자부터 규칙에 따라 모든 배열에의 요소에 분배한다. 나중에 누르는 숫자는 연속해서 바뀌고, 그다음에 누르는 숫자는 3번에 한 번씩 바뀌고, 그다음에 누르는 숫자는 9번에 한 번씩 바뀌는 규칙을 이용하였다.
코드
/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function(digits) {
if (digits===''){
return [];
}
const digitList = digits.split('');
const map = {
'2':'abc',
'3':'def',
'4':'ghi',
'5':'jkl',
'6':'mno',
'7':'pqrs',
'8':'tuv',
'9':'wxyz'
}
let totalSize = 1;
for(let i=0; i<digits.length; i++){
totalSize *= map[digits[i]].length;
}
let result = new Array(totalSize).fill('');
let size = 1;
while(digitList.length){
let str = map[digitList.pop()];
for (let i=0; i<totalSize; i++){
let idx = parseInt(i/size) % str.length;
result[i] = str[idx] + result[i];
}
size *= str.length;
}
return result;
};
결과
Runtime: 76 ms, faster than 70.22% of JavaScript online submissions for Letter Combinations of a Phone Number.
Memory Usage: 38.9 MB, less than 9.12% of JavaScript online submissions for Letter Combinations of a Phone Number.
복기
- 어렵지 않게 풀수 있었다.
'개발 공부 > 알고리즘 문제 풀이' 카테고리의 다른 글
[LeetCode] 22. Generate Parentheses (0) | 2021.06.24 |
---|---|
[LeetCode] 19. Remove Nth Node From End of List (0) | 2021.06.24 |
[LeetCode] 15. 3Sum (0) | 2021.06.24 |
[LeetCode] 92. Reverse Linked List II (0) | 2021.06.24 |
[LeetCode] 1. Two Sum (0) | 2021.06.23 |