[3차] 압축

LJM·2023년 4월 17일
0

programmers

목록 보기
27/92

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;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글