알고리즘 풀이
.leetcode(17. Letter Combinations of a Phone Number)
silvergoni
2021. 1. 31. 14:05
반응형
문제
https://leetcode.com/problems/letter-combinations-of-a-phone-number/
문제 풀기 전
- 이렇게 출력하는 문제를 보면 재귀로 다 돌려야한다. 보통이런걸 조건에 따라 돌리기때문에 backtracking이라고 한다.
직접 푼 풀이
소요시간: 22분(13:12 ~ 13:34)
class Solution {
private String[][] phoneText = new String [][]{{" "},
{},
{"a","b","c"},
{"d","e","f"},
{"g","h","i"},
{"j","k","l"},
{"m","n","o"},
{"p","q","r","s"},
{"t","u","v"},
{"w","x","y","z"}
};
private List<String> output = new ArrayList<>();
public List<String> letterCombinations(String digits) {
if (digits.equals("")) {
return output;
}
int[] array = new int[digits.length()];
for (int i=0; i<digits.length(); i++) {
array[i]=(int)(digits.charAt(i)-'0');
}
make(array, 0, "");
return output;
}
private void make(int[] array, int index, String word) {
if (array.length == index) {
output.add(word);
return;
}
int phoneNumber = array[index];
String[] texts = phoneText[phoneNumber];
for (int i=0; i<texts.length; i++) {
make(array, index+1, word + texts[i]);
}
}
}
느낀점
- 크게 어려운점은 없었다.