-
[프로그래머스] [3차] 압축 - Java공부/프로그래머스 2024. 7. 31. 22:55728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스 [3차] 압축 자바 풀이
난이도: Lv2
풀이
book에 A~Z까지 알파벳을 우선 저장 후
msg를 돌며 book에서 str+msg.charAt(idx)의 색인번호를 찾고 없을 경우 while문에서 나오며,
색인번호가 있을 경우 다음 단어를 더하여 색인번호가 없기 전까지 문자열을 더해준다.
즉 색인번호가 있는 가장 긴 문자열을 찾는다.
찾은 문자열의 색인 번호를 answer에 넣고,
문자열에 다음 단어를 더하여 색인번호를 등록한다.
코드
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; class Solution { public List<Integer> solution(String msg) { List<Integer> answer = new ArrayList<>(); Map<String, Integer> book = new HashMap<>(); char word='A'; for(int i=1;i<='Z'-'A'+1;i++){ book.put(word+"", i); word+=1; } int idx=0; while(idx<msg.length()){ String str=""; while(idx<msg.length()){ if(!book.containsKey(str+msg.charAt(idx))){ break; }else{ str+=msg.charAt(idx); } idx++; } answer.add(book.get(str)); if(idx<msg.length()){ book.put(str+msg.charAt(idx), book.size()+1); } } return answer; } }
728x90반응형'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 롤케이크 자르기 - Java (0) 2024.08.05 [프로그래머스] 모음사전 - Java (0) 2024.08.01 [프로그래머스] k진수에서 소수 개수 구하기 - Java (0) 2024.07.30 [프로그래머스] [1차] 뉴스 클러스터링 - Java (0) 2024.07.15 [프로그래머스] 피로도 - Java (0) 2024.07.05