🔗 [3차] 압축
import java.util.*;
class Solution {
public int[] solution(String msg) {
//색인 출력을 저장하는 리스트
List<Integer>list=new ArrayList<>();
// [단어, 색인 번호]
Map<String, Integer> map=new HashMap<>();
for(int i=0;i<26;i++){// A ~ Z 저장
char c=(char)('A'+i);
map.put(String.valueOf(c),i+1);
}
char [] arr=msg.toCharArray();// 배열로 변환
for(int i=0;i<arr.length;i++){// 한 사이클 (한 row)
String w=Character.toString(arr[i]);//현재 입력
for(int j=i+1;j<arr.length;j++){//현재 입력 부터 색인에 없는 글자까지 탐색
String c=Character.toString(arr[j]);// 다음 글자
if(!map.containsKey(w+c)){// 다음 글자까지 해서 없는 경우
list.add(map.get(w));// 색인 출력
map.put(w+c,map.size()+1);// 색인 등록
break;// 다음 사이클로
}else{// 다음 글자까지 해도 있는 경우
w=w+c;//w 업데이트
i++;// 예제1의 w가 KA 라면 다음 w는 O가 돼야 하므로 i도 증가
}
}
if(i==arr.length-1)list.add(map.get(w));//마지막은 현재 입력 출력만 하고 종료
}
return list.stream().mapToInt(Integer::intValue).toArray();
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #42584 : 주식가격 - JAVA (1) | 2025.02.05 |
---|---|
[ 프로그래머스 ] #17683 : [3차] 방금그곡 - JAVA (0) | 2025.01.25 |
[ 프로그래머스 ] #17680 : [1차] 캐시 - JAVA (1) | 2025.01.21 |
[ 프로그래머스 ] #17679 : [1차] 프렌즈4블록 - JAVA (0) | 2025.01.21 |
[ 프로그래머스 ] #42889 : 실패율 - JAVA (0) | 2025.01.16 |