https://programmers.co.kr/learn/courses/30/lessons/17684
코딩테스트 연습 - [3차] 압축
TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]
programmers.co.kr
저는 Map을 이용해 문제를 해결하였습니다.
Map을 통해 문제에서의 사전을 구현하였고, Map에서 못 찾을때까지 subString을 만들면서 index를 찾아나가 문제를 해결하였습니다.
import java.util.*;
class Solution {
public int[] solution(String msg) {
int NUMBER = 1;
Map<String,Integer> dic = new HashMap<>();
for(int i = 0 ; i < 'Z' - 'A'+1 ; i++){
char now = (char)('A'+i);
dic.put(now+"",NUMBER++);
}
List<Integer> result= new LinkedList<>();
for(int i = 0 ; i < msg.length() ; i++){
int index = 0;
String sub = "";
for(int j = i + 1 ; j <= msg.length() ; j++){
sub = msg.substring(i,j);
if(dic.containsKey(sub)){
index = dic.get(sub);
if(j == msg.length()){
i = j;
}
continue;
}else{
i = j-2;
break;
}
}
dic.put(sub,NUMBER++);
result.add(index);
}
// System.out.println(result);
int[] answer = {};
answer = result.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 가운데 글자 가져오기 (JAVA) (0) | 2022.06.25 |
---|---|
프로그래머스 가장 먼 노드 (JAVA) (0) | 2022.06.24 |
프로그래머스 섬 연결하기 (JAVA) (0) | 2022.06.22 |
프로그래머스 입국심사 (JAVA) (0) | 2022.06.21 |
프로그래머스 하노이의 탑(JAVA) (0) | 2022.06.20 |