https://programmers.co.kr/learn/courses/30/lessons/17684
1. 유형
해시맵
2. 시뮬레이션
- 딕셔너리에 등록되지 않은 가장 긴 문자열 탐색
- 등록되지 않은 문자열은 딕셔너리에 등록
- 문자열 끝까지 위를 반복
3. 코드
import java.util.*;
class Solution {
static List<Integer> ans = new ArrayList<>();
static Map<String, Integer> map = new HashMap<>();
static int index =27;
static public int[] solution(String msg) {
int[] answer = {};
int head = 0;
for(int i=0; i<26; i++){
char ch = (char)('A'+i);
map.put(String.valueOf(ch), i+1);
}
while(head < msg.length()){
head=simulation(msg, head);
}
answer = new int[ans.size()];
for(int i=0; i<answer.length; i++)
answer[i]=ans.get(i);
return answer;
}
static int simulation(String msg, int head){
int tail=msg.length();
String temp ="";
for(int i=head; i<msg.length(); i++){
temp += msg.charAt(i);
if( !map.containsKey(temp)){
map.put(temp, index++);
ans.add(map.get(msg.substring(head, i)));
tail = i;
return tail;
}
}
ans.add(map.get(temp));
return tail;
}
}
4. 느낀점
A-Z와 index를 함께 딕셔너리에 등록하는 부분에서 버벅거렸다.
int -> char -> String 형태로 형변환을 해줘야한다
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[devmoon]프로그래머스 - 방문 길이 (0) | 2021.06.22 |
---|---|
프로그래머스 - JadenCase 문자열 (0) | 2021.06.22 |
프로그래머스 - 이중우선순위큐 (0) | 2021.06.18 |
프로그래머스 - 보행자 천국 (0) | 2021.06.18 |
프로그래머스 - 단어변환 (0) | 2021.06.17 |