https://school.programmers.co.kr/learn/courses/30/lessons/17684
그냥 문제에서 요구하는 대로 구현하였다
근데 복잡하게 구현한거 같다;;
import java.util.*;
class Solution {
public int[] solution(String msg) {
int[] answer = {};
ArrayList<Integer> ansList = new ArrayList<>();
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0; i < 26; ++i)
{
String temp = "";
temp = Character.toString(i+'A');
map.put(temp, i+1);
//System.out.println(temp);
}
ArrayList<Character> arr = new ArrayList<>();
for(int i = 0; i < msg.length(); ++i)
arr.add(msg.charAt(i));
StringBuilder sb = new StringBuilder();
int maxSize = 1;
while(arr.isEmpty() == false)
{
sb.setLength(0);
maxSize = Math.min(maxSize, arr.size());
for(int i = 0; i < maxSize; ++i)
{
sb.append(arr.get(i));
}
//System.out.println(sb.toString());
while(sb.length() > 0)
{
if(map.containsKey(sb.toString()))
{
ansList.add(map.get(sb.toString()));
for(int i = 0; i < sb.length(); ++i)
arr.remove(0);
if(arr.isEmpty() == false)
{
sb.append(arr.get(0));
//System.out.println(map.size());
map.put(sb.toString(), map.size()+1);
}
maxSize++;
break;
}
else
{
sb.deleteCharAt(sb.length()-1);
}
}
//break;
}
answer = new int[ansList.size()];
for(int i = 0; i < ansList.size(); ++i)
answer[i] = ansList.get(i);
return answer;
}
}