원본 : https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
import java.util.*;
class Solution {
public int[] solution(String msg) {
LinkedList<String> list = new LinkedList<>(Arrays.asList(msg.split("")));
List<String> dictionary = new ArrayList<>();
for (char ch = 'A'; ch <= 'Z'; ch++) {
dictionary.add(String.valueOf(ch));
}
StringBuilder result = new StringBuilder();
StringBuilder sb;
while (!list.isEmpty()) {
sb = new StringBuilder(list.poll());
while (true) {
if (list.isEmpty()) {
break;
}
sb.append(list.poll());
if (!dictionary.contains(sb.toString())) {
break;
}
}
if (list.isEmpty()) {
if (dictionary.contains(sb.toString())) {
result.append(dictionary.indexOf(sb.toString()) + 1).append(",");
} else {
String lastStr = String.valueOf(sb.charAt(sb.length() - 1));
String preStr = sb.deleteCharAt(sb.length() - 1).toString();
result.append(dictionary.indexOf(preStr) + 1).append(",");
result.append(dictionary.indexOf(lastStr) + 1).append(",");
}
} else {
dictionary.add(sb.toString());
if (sb.length() >= 2) {
list.addFirst(String.valueOf(sb.charAt(sb.length() - 1)));
sb.deleteCharAt(sb.length() - 1);
}
result.append(dictionary.indexOf(sb.toString()) + 1).append(",");
}
}
return Arrays.stream(result.deleteCharAt(result.length() - 1).toString().split(",")).mapToInt(Integer::parseInt).toArray();
}
}
[3차] n진수 게임 (2018 KAKAO BLIND RECRUITMENT) (0) | 2022.07.29 |
---|---|
올바른 괄호 (스택/큐) (0) | 2022.07.29 |
가장 큰 정사각형 찾기 (연습문제) (0) | 2022.07.28 |
[3차] 방금그곡 (2018 KAKAO BLIND RECRUITMENT) (0) | 2022.07.27 |
방문 길이 (Summer/Winter Coding(~2018)) (0) | 2022.07.27 |
댓글 영역