일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- React 고급안내서
- background: url
- Nextjs React 18
- notFound()
- Javascript
- Babel
- next13 head
- Nextjs
- React18
- background tab
- context
- React 18
- React API 참고서
- codingtest
- react-helmet
- hook
- background setttimeout
- CSS
- 고급안내서
- React 18 Nextjs
- getUTCDate
- React 고급 안내서
- RTK Query
- Next13
- background setInterval
- react hook
- React 공식문서
- Render Props
- Programmers
- react
Archives
- Today
- Total
akjfal
[Programmer] [3차] 압축 본문
// 사전 초기화 w 제거 및 w 의 index출력
// 남은글자 w+c를 사전에 등록
import java.util.LinkedList;
import java.util.HashMap;
class Solution {
String[] diction;
HashMap<String, Integer> map = new HashMap<>();
public int[] solution(String msg) {
int[] answer = {};
LinkedList<Integer> list = new LinkedList<>();
char startChar = 'A';
int recentIdx = 0;
for(int i = 0; i < 27; i++){
map.put(Character.toString(startChar+i), ++recentIdx);
}
int start = 0;
int end = 1;
int length = msg.length();
while(start < length){
int lastIdx = 0;
while(start < length){
String test = msg.substring(start, end);
if(map.containsKey(test)){
lastIdx = map.get(test);
end++;
if(end == length+1){
start = length;
list.add(lastIdx);
break;
}
}else{
map.put(test, recentIdx++);
list.add(lastIdx);
start = end-1;
break;
}
}
}
answer = new int[list.size()];
int i = 0;
for(int num : list){
answer[i] = num;
i++;
}
return answer;
}
}
딱히 어려울것없이 흐름대로 풀면된다.
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 올바른 괄호 (0) | 2021.06.24 |
---|---|
[Programmers] [3차] 파일명 정렬 (0) | 2021.06.24 |
[Programmers] [3차] 방금 그곡 (0) | 2021.06.22 |
[Programmers] 가장 큰 정사각형 찾기 (0) | 2021.06.22 |
[Programmers] 방문 길이 (0) | 2021.06.22 |
Comments