사용 알고리즘: 구현
사용 언어: java
import java.util.*;
class Solution {
Map<String, Integer> map = new HashMap<>(); //이건 꼭 써야 해..
int nxt = 27;
public int[] solution(String msg) {
initMap();
List<Integer> list = new ArrayList<>();
for(int i = 0; i < msg.length(); i++) {
StringBuilder sb = new StringBuilder();
int move = 0;
for(int j = i; j < msg.length(); j++) {
sb.append(msg.charAt(j));
if(!map.containsKey(sb.toString())) {
map.put(sb.toString(), nxt++);
break;
}
move++;
}
//
i += move - 1;
//if(i != msg.length() - 1) System.out.println(sb.toString());
if(i != msg.length() - 1) sb.deleteCharAt(sb.length() - 1);
list.add(map.get(sb.toString()));
}
//System.out.println(list);
return listToArr(list);
}
public int[] listToArr(List<Integer> list) {
int[] a = new int[list.size()];
for(int i = 0; i < list.size(); i++) {
a[i] = list.get(i);
}
return a;
}
//
public void initMap() {
for(char c = 'A'; c <= 'Z'; c++) {
String key = String.valueOf(c);
map.put(key, c - 'A' + 1);
}
//System.out.println(map);
}
}
처음엔 머리로만 풀려고 했고
두 번째는 손으로 끄적여보면 서 한 문제...
문제 자체가 어렵지는 않은 거 같은데
로직이 좀 복잡하니까... 손으로 끄적이는 연습도 하자