반응형
https://programmers.co.kr/learn/courses/30/lessons/17684
[ 문제풀이 ]
HashMap 자료구조를 사용하면 정말 간단하게 해결할 수 있는 문제이다. 문자열 끝까지 진행하면서 현재의 문자열이 HashMap에 존재하는지를 판단하면서 계속해서 갱신해주면 된다.
import java.util.*;
class Solution {
public int[] solution(String msg) {
ArrayList<Integer> list = new ArrayList<>();
HashMap<String, Integer> hm = new HashMap<>();
//'A' ~ 'Z'까지 넣어줌
for (int i = 1; i <= 26; ++i) {
hm.put(Character.toString((char)(64 + i)), i);
}
int index = 27;
for (int i = 0; i < msg.length(); ) {
String now = msg.substring(i, i + 1);
int j = i + 1;
//현재 문자열이 HashMap에 존재하면 문자를 추가
while (j < msg.length() && hm.containsKey(now + msg.charAt(j))) {
now += msg.charAt(j++);
}
//마지막 인덱스면 종료
if (j == msg.length()) {
list.add(hm.get(now));
break;
}
//현재 문자열의 색인 번호를 출력
list.add(hm.get(now));
//다음 문자를 추가한 문자열을 HashMap에 삽입
now += msg.charAt(j);
hm.put(now, index++);
i = j;
}
int[] answer = new int[list.size()];
for (int i = 0; i < answer.length; ++i) {
answer[i] = list.get(i);
}
return answer;
}
}
반응형
'Problem Solving > 카카오 블라인드 기출' 카테고리의 다른 글
2018 - [3차] 파일명 정렬 (0) | 2021.08.07 |
---|---|
2018 - [3차] 자동완성 (0) | 2021.08.07 |
2018 - [3차] 방금그곡 (0) | 2021.08.07 |
2018 - [1차] 다트 게임 (0) | 2021.08.07 |
2018 - [1차] 비밀지도 (0) | 2021.08.07 |
댓글