붕어의 개발 기록
8월 14일 99클럽 항해 24일 본문
반응형
99클럽 항해 24일차
오늘의 문제는 대충 만든 자판이다.

문제에서 주어지는 keymap을 가지고 최소 키 입력을 도출해내는 문제이다.
맵에 keymap의 각 문자를 키로 하여 해당 키의 최소 입력수를 값으로 저장한다.
키맵을 순회하며 각 문자를 키로 저장하며, 키가 없을땐 현재 위치를 기본 값으로 저장하고, 키가 있다면 현재 키에 저장된 입력 값과 위치를 비교하여 작은 수를 저장한다.
targets을 순회하며 각 타겟에 키가 이미 존재하면 저장된 입력 값을 배열에 저장하고 없으면 -1을 리턴한다.
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
Map<Character, Integer> map = new HashMap<>();
for (String s : keymap) {
for (int i = 0; i < s.length(); i++) {
char key = s.charAt(i);
int value = map.getOrDefault(key, i + 1);
map.put(key, Math.min(value, i + 1));
}
}
for (int i = 0; i < targets.length; i++) {
for (int j = 0; j < targets[i].length(); j++) {
char key = targets[i].charAt(j);
if (map.containsKey(key)) {
answer[i] += map.get(key);
} else {
answer[i] = -1;
break;
}
}
}
return answer;
}
}
반응형
'항해99(2024-07~08) > 99클럽 하루 한문제' 카테고리의 다른 글
| 8월 13일 99클럽 항해 23일 (0) | 2024.08.13 |
|---|---|
| 8월 12일 99클럽 항해 22일 (0) | 2024.08.12 |
| 8월 11일 99클럽 항해 21일 (0) | 2024.08.11 |
| 8월 10일 99클럽 항해 20일 (0) | 2024.08.10 |
| 8월 9일 99클럽 항해 19일 (0) | 2024.08.09 |