[프로그래머스][3차][압축]

2020. 4. 9. 16:27프로그래머스/카카오

import java.util.*;

class Solution {
  public int[] solution(String msg) {
      int[] answer = {};
      int putnum = 27;
      boolean flag =true;
      
      Map<String,Integer> dic = new HashMap<>();
      List<Integer> addAnswer = new ArrayList<>();
          
      for(int i=0; i<26; i++){
          dic.put(Character.toString((char)('A'+i)),i+1);
      }
      
      for(int i=0; i<msg.length(); i++){
          for(int j=i+1; j<=msg.length(); j++){
              String temp = msg.substring(i,j);
              if(!dic.containsKey(temp)){
                  dic.put(temp,putnum);
                  putnum++;
                  addAnswer.add(dic.get(msg.substring(i,j-1)));
                  i = j-2;
                  break;
              }else{
                  if(j==msg.length()){
                      addAnswer.add(dic.get(msg.substring(i)));
                      flag= false;
                  }
              }
          }
          if(flag==false){
              break;
          }
      }
      
    answer = new int[addAnswer.size()];
      for(int i=0; i<answer.length; i++){
          answer[i] = addAnswer.get(i);
      }
      return answer;
  }
}

Map을 이용하여 사전에 등록할 새로운 단어는 등록하고, 새 단어가 되기 전까지를 출력하는것을 반복