Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] [3차] 압축 - 17684 본문

프로그래머스

[level 2] [3차] 압축 - 17684

csct3434 2024. 2. 28. 20:00

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.ArrayList;
import java.util.HashMap;

class Solution {

    public int[] solution(String msg) {
       ArrayList<Integer> answer = new ArrayList<>();

       HashMap<String, Integer> dict = new HashMap<>();
       for (char c = 'A'; c <= 'Z'; c++) {
          dict.put(String.valueOf(c), c - 'A' + 1);
       }

       while (!msg.isEmpty()) {
          int len = 1;

          while (++len <= msg.length()) {
             if (!dict.containsKey(msg.substring(0, len))) {
                break;
             }
          }
          len--;

          answer.add(dict.get(msg.substring(0, len)));
          if (len + 1 <= msg.length()) {
             dict.put(msg.substring(0, len + 1), dict.size() + 1);
          }
          msg = msg.substring(len);
       }

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