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

 

1. 문제 : Link

 

 

2. 풀이 : Link

 

 

3. 코드

def solution(msg):
    answer = []
    dic = {}

    for i in range(26):
        dic[chr(65+i)] = i+1

    w, c = 0, 0
    while True:
        c += 1
        if c == len(msg):
            answer.append(dic[msg[w:c]])
            break
        if msg[w:c+1] not in dic:
            dic[msg[w:c+1]] = len(dic) + 1
            answer.append(dic[msg[w:c]])
            w = c

    return answer
import java.util.*;

class Solution {
    public int[] solution(String msg) {
        String[] alpha = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
        
        Map<String, Integer> hm = new HashMap<String, Integer>();
        for(int i=0; i<alpha.length; i++){
            hm.put(alpha[i], i+1);
        }
        
        List<Integer> ans = new ArrayList<Integer>();
        
        int len = msg.length();
        
        int i = 0;
        while(i < len){
            String temp = String.valueOf(msg.charAt(i));
            int val = 0;

            while(hm.containsKey(temp)){
                val = hm.get(temp);
                i++;
                if(i!=len){
                    temp += String.valueOf(msg.charAt(i));
                } else{
                    break;
                }
            }
            hm.put(temp, hm.size()+1);
            ans.add(val);
        }
        
        int[] answer = new int[ans.size()];
        for(int k=0; k<ans.size(); k++){
            answer[k] = ans.get(k);
        }
        return answer;
    }
}
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기