728x90
🔗 문제링크
📂 분류
구현
💡 풀이
문제 설명에 나와 있는 LZW 압축 과정을 구현하면 되는 문제이다.
접근 방식
- A ~ Z까지 HashMap을 이용해 초기화를 한다.
- 현재 단어 w와 다음 단어 c를 받는다.
- w + c가 map에 저장되어있는지 확인하고, 저장되어있다면 continue로 건너뛰어 위 과정을 다시 진행한다.
- w + c가 없다면, w 값을 출력하고 map에 저장한 다음 w를 초기화시켜준다.
💻 코드
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Solution {
private final Map<String, Integer> map = new HashMap<>();
private int index = 1;
public int[] solution(String msg) {
int[] answer;
List<Integer> output = new ArrayList<>();
init();
StringBuilder w = new StringBuilder();
for (int i = 0; i < msg.length(); i++) {
w.append(String.valueOf(msg.charAt(i)));
String wc = "";
if (i + 1 < msg.length()) {
String c = String.valueOf(msg.charAt(i + 1));
wc = w + c;
if (map.containsKey(wc)) {
continue;
}
}
output.add(map.get(w.toString()));
map.put(wc, index++);
w = new StringBuilder();
}
answer = output.stream().mapToInt(i -> i).toArray();
return answer;
}
private void init() {
char start = 'A';
for (; index <= 26; index += 1) {
map.put(String.valueOf(start++), index);
}
}
}
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 Lv2 - [3차] 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT) (0) | 2022.06.14 |
---|---|
[Python] 프로그래머스 Lv2 - 양궁대회 (2022 KAKAO BLIND RECRUITMENT) (0) | 2022.06.10 |
[Java] 프로그래머스 Lv2 - 3 x n 타일링 (0) | 2022.06.02 |
[Java] 프로그래머스 Lv2 - 2 x n 타일링 (0) | 2022.05.31 |
[Java] 프로그래머스 Lv2 - 가장 큰 정사각형 찾기 (0) | 2022.05.30 |