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

김운채·2024년 3월 27일
0



풀이

import java.util.*;

class Solution {
    public int[] solution(String s) {
        Map<String, Integer> map = new HashMap<>(); //사전

        for(char c = 'A'; c<='Z'; c++){
            map.put(String.valueOf(c), c-'A'+1);
        }

        List<Integer> list = new ArrayList<>(); // 색인 번호를 담을 리스트

        StringBuilder w = new StringBuilder(); // 검색할 문자열

        int idx= 27; //마지막 색인 번호가 27

        for(char c : s.toCharArray()){
            w.append(c);
            if(!map.containsKey(w.toString())){ // 사전에 없으면
                list.add(map.get(w.substring(0, w.length()-1)));  // w에 해당하는 색인 번호 추가
                map.put(w.toString(),idx); // 사전에 w+c 추가
                idx++;
                w = new StringBuilder(String.valueOf(c)); // w 초기화
            }
        }

        list.add(map.get(w.toString()));


        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}

0개의 댓글

관련 채용 정보