Skip to content

Latest commit

 

History

History
47 lines (39 loc) · 1.45 KB

File metadata and controls

47 lines (39 loc) · 1.45 KB

프로그래머스 Level2 : 2018 KAKAO BLIND RECRUITMENT [3차] 압축

import java.util.HashMap;
import java.util.ArrayList;
import java.util.Map;
class Solution {
    public int[] solution(String msg) {
        int len = msg.length();
        HashMap<String,Integer> dictionary = new HashMap<>();
        ArrayList<Integer> zip = new ArrayList<>();
        
        int index = 1;
        for(char c ='A'; c<='Z'; c++){
            dictionary.put(Character.toString(c),index++);
        }
        
        StringBuilder curr = new StringBuilder();
        
        for(int i=0; i<len; i++){
            StringBuilder prev = new StringBuilder();
            prev.append(curr);
            curr.append(msg.charAt(i));
            //System.out.println(curr.toString());
            
            if(dictionary.containsKey(curr.toString()) && i<len-1) continue;
            else if(dictionary.containsKey(curr.toString()) && i==len-1){
                zip.add(dictionary.get(curr.toString()));
            } else{
                zip.add(dictionary.get(prev.toString()));
                dictionary.put(curr.toString(),index++);
                curr.delete(0,curr.length());
                i--;
            }
        }
        
        int[] answer = new int[zip.size()];
        for(int i=0; i<zip.size(); i++){
            answer[i] = zip.get(i);
        }
        
        return answer;
    }
}