[프로그래머스] 압축(Java)

수경·2023년 2월 19일
0

problem solving

목록 보기
117/174

프로그래머스 - 압축

풀이

문제 이해하는 데만 한참 걸렸다..
구현 문제인 것 같아서 정말 하라는 대로 했다.
카카오는 거의 구현문제가 많이 나오는 듯 하다.

  • 들어온 문자열을 문자 단위로 나눠서 큐(queue)에 저장
  • queue.poll() + queue.peek() 문자열이 사전에 있는 지 확인
    • 있으면 다음 문자까지 붙인 문자열이 사전에 있는 지 확인(반복)
    • 없으면 문자열에 해당하는 번호 저장 + queue.poll() + queue.peek() 문자열을 사전에 저장

코드

import java.util.*;

class Solution {
    public int[] solution(String msg) {
        Map<String, Integer> dict = new HashMap<>();
		Queue<Character> queue = new LinkedList<>();
		List<Integer> result = new LinkedList<>();

		int count = 1;
		for (char alpha = 'A'; alpha <= 'Z'; alpha++) dict.put("" + alpha, count++);
		for (int i = 0; i < msg.length(); i++) queue.add(msg.charAt(i));

		while (!queue.isEmpty()) {
			String w = "" + queue.poll();

			while (!queue.isEmpty() && dict.containsKey(w + queue.peek())) {
				w += queue.poll();
			}
			result.add(dict.get(w));
			if (!queue.isEmpty()) dict.put(w + queue.peek(), count++);
		}

		return result.stream().mapToInt(n -> n).toArray();
    }
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글