풀이.
처음 문제를 풀었을 때 최소 횟수를 제대로 매핑하지 못해서 테스트 케이스를 많이 틀렸다.
먼저 HashMap map 에 키와 밸류를 매핑해주는데
이때 기존에 키를 가지고 있다면 더 작은 값을 넣어주는게 일단 중요함.
그리고 또 테스트 케이스를 틀리게 했던 부분은
문제 의도를 잘못해석해서 키가 없을 경우 -1을 넣어줘야 하는데
그냥 전체를 -1로 리턴했다..
가령 keymap 이 ["AA"] 이고 targets가 ["B", "A"] 라면
정답은 [-1, 1]이 되어야 하는데 문제를 잘못 이해해 그냥 [-1]로 리턴한 것.
이 두 부분만 잘 이해하고 넘어갔다면 쉽게 풀 수 있었을텐데
아직 문제 파악이 서툰것 같다. 그래도 끙끙대며 맞추기 성공!
import java.util.HashMap;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
HashMap<Character, Integer> map = new HashMap<>();
// 최소 키패드 값 매핑
for (int k = 0; k < keymap.length; k++) {
String s = keymap[k];
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
int press = i + 1;
map.put(ch, Math.min(press, map.getOrDefault(ch, press)));
}
}
// targets 배열 돌면서
// 키 없으면 sum = -1 넣어주고 inner for문 break;
for (int i = 0; i < targets.length; i++) {
int sum = 0;
for (int j = 0; j < targets[i].length(); j++) {
char ch = targets[i].charAt(j);
if (!map.containsKey(ch)) {
sum = -1;
break;
}
sum += map.get(ch);
}
answer[i] = sum;
}
return answer;
}
}
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/160586
'CODING TEST' 카테고리의 다른 글
프로그래머스 - 숫자 짝꿍 (0) | 2023.08.11 |
---|---|
프로그래머스 - 햄버거 만들기 (0) | 2023.08.10 |
프로그래머스 - 다항식 더하기 (0) | 2023.08.01 |
프로그래머스 - 달리기 경주 (0) | 2023.07.28 |
프로그래머스 고득점 Kit - 스택/큐 프로세스 (0) | 2023.07.22 |