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 (int i = 0; i < keymap.length; i++) {
for (int j = 0; j < keymap[i].length(); j++) {
char c = keymap[i].charAt(j);
map.put(c, Math.min(map.getOrDefault(c, Integer.MAX_VALUE), j + 1));
}
}
for (int i = 0; i < targets.length; i++) {
String target = targets[i];
int answerValue = 0;
for (int j = 0; j < target.length(); j++) {
char c = target.charAt(j);
if (map.containsKey(c)) {
answerValue += map.get(c);
} else {
answerValue = -1;
break;
}
}
answer[i] = answerValue;
}
return answer;
}
}
keymap 순회하여 각 문자를 누르기 위한 최소값들을 map 에 해쉬함.
targets 순회하며 각 문자에 대해 map 을 조회하여 값을 취합.
알게 된 Map 의 Method
map.putIfAbsent(key, value);
map 에 key 없을때만 추가함. 즉, 기존에 key 가 있다면 덮어쓰지 않음.
map.getOrDefault(key, defaultValue);
map 에 key 없을때 default value 걸어주는거 if 안쓸 수 있음.