💡풀이
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
Map<Character, Integer> map = new HashMap<>();
// keymap을 순회하며 각 알파벳의 가장 적게 누르는 횟수를 저장함
// ex) "BACAD" -> ('A', 2) 단 기존에 저장되어있던 'A' 횟수보다 작을 경우
for(String s : keymap) {
for(int i = 0; i < s.length(); i++) {
if(i + 1 <= map.getOrDefault(s.charAt(i), 100)) {
map.put(s.charAt(i), i + 1);
}
}
}
int[] answer = new int[targets.length];
A:
for(int index = 0; index < targets.length; index++) {
int result = 0;
for(int i = 0; i < targets[index].length(); i++) {
int count = map.getOrDefault(targets[index].charAt(i), -1);
if(count < 0) {
answer[index] = -1; // map에 저장된 값이 없다면 -1 저장 후 다음 target으로 넘어감
continue A;
}
result += count;
}
answer[index] = result; // 정상적으로 반복문이 종료된 경우 answer에 결과값을 저장
}
return answer;
}
}
GitHub - okjunghyeon/Programmers_CodingTest: 프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다.
프로그래머스 관련 코딩테스트 문제를 풀이한 저장소입니다. Contribute to okjunghyeon/Programmers_CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스, Java] 완주하지 못한 선수 (0) | 2025.07.21 |
---|---|
[프로그래머스, Java][PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2025.07.18 |
[프로그래머스, Java] 문자열 나누기 (0) | 2025.07.18 |
[프로그래머스, Java] 둘만의 암호 (0) | 2025.07.18 |
[프로그래머스, Java] 로또의 최고 순위와 최저 순위 (0) | 2025.07.18 |