programmers_[3차] 압축_java
2023. 4. 10. 10:05ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17684
import java.util.*;
class Solution {
public int[] solution(String msg) {
int[] answer;
List<Integer> list = new ArrayList<>();
// 사전
Map<String, Integer> dict = new HashMap<>();
// A - Z 초기화
int idx= 1;
for(int i = 0; i<26; i++){
dict.put(Character.toString('A' + i), idx++);
}
int msgLength = msg.length();
StringBuilder sb = new StringBuilder();
for(int i = 0; i<msgLength; i++){
// 현재 입력 w가 사전에 있는 경우
if(dict.containsKey(sb.toString() + Character.toString(msg.charAt(i)))){
sb.append(Character.toString(msg.charAt(i)));
continue;
}
// 현재 입력 w가 사전에 없는 경우
else{
list.add(dict.get(sb.toString()));
dict.put(sb.toString() + Character.toString(msg.charAt(i)), idx++);
sb.setLength(0);
sb.append(Character.toString(msg.charAt(i)));
}
}
// 남은 것 처리
list.add(dict.get(sb.toString()));
// list to array;
int listSize = list.size();
answer = new int[listSize];
int tmp = 0;
for(int i : list){
answer[tmp++] = i;
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_주차 요금 계산_java (0) | 2023.04.10 |
---|---|
programmers_[3차] n진수 게임_java (0) | 2023.04.10 |
programmers_할인 행사_java (0) | 2023.04.07 |
programmers_피로도_java (0) | 2023.04.06 |
programmers_타겟 넘버_java (0) | 2023.04.06 |