문제 링크
압축
풀이
- 처음에 재귀로 푸는 것인 줄은 알아냈으나, 재귀를 짜는게 아직 서툴러서 너무 고통스러웠다.
- 결국은 남이 푼 것을 보고 도움을 받아 풀었다.
- 재귀 문제를 조금 더 많이 풀어보자.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] solution(String msg) {
List<Integer> answer = new ArrayList<>();
List<String> dict = init();
recursive(dict, answer, msg);
return answer.stream()
.mapToInt(Integer::intValue)
.toArray();
}
private List<String> init() {
return Arrays.stream("ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("")).collect(Collectors.toList());
}
private void recursive(List<String> dict, List<Integer> answer, String msg) {
for (int i = 0; i < msg.length(); i++) {
String subStr = msg.substring(0, i + 1);
if (!dict.contains(subStr)) {
dict.add(subStr);
answer.add(dict.indexOf(msg.substring(0, i)) + 1);
recursive(dict, answer, msg.substring(i));
break;
} else {
if (i + 1 == msg.length()) {
answer.add(dict.indexOf(msg.substring(0, i + 1)) + 1);
break;
}
}
}
}
}