문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/160586

제한 사항

입출력 예



풀이
import java.util.HashMap;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
/*HashMap<String, Integer> keyHashMap = new HashMap<>();
for (String keymapStr : keymap) {
for (int i = 0; i < keymapStr.length(); i++) {
if (keyHashMap.containsKey(String.valueOf(keymapStr.charAt(i)))) {
if (keyHashMap.get(String.valueOf(keymapStr.charAt(i))) > i)
keyHashMap.put(String.valueOf(keymapStr.charAt(i)), i);
}
else keyHashMap.put(String.valueOf(keymapStr.charAt(i)), i);
}
}
for (int i = 0; i < targets.length; i++) {
for (int j = 0; j < targets[i].length(); j++) {
if (keyHashMap.containsKey(String.valueOf(targets[i].charAt(j)))) {
answer[i] += keyHashMap.get(String.valueOf(targets[i].charAt(j))) + 1;
}
else {
answer[i] = -1;
break;
}
}
}
*/
HashMap<Character, Integer> keyHashMap = new HashMap<>();
for (String keymapStr : keymap) {
for (int i = 0; i < keymapStr.length(); i++) {
if (keyHashMap.containsKey(keymapStr.charAt(i))) {
if (keyHashMap.get(keymapStr.charAt(i)) > i)
keyHashMap.put(keymapStr.charAt(i), i);
}
else keyHashMap.put(keymapStr.charAt(i), i);
}
}
for (int i = 0; i < targets.length; i++) {
for (int j = 0; j < targets[i].length(); j++) {
if (keyHashMap.containsKey(targets[i].charAt(j))) {
answer[i] += keyHashMap.get(targets[i].charAt(j)) + 1;
}
else {
answer[i] = -1;
break;
}
}
}
return answer;
}
}
후기
전에 풀다가 HashMap에서 오류가 나서 나중에 풀어야지 하고 나뒀던 문제인데 다시 풀어보니까 이번에는 괜찮았다. 전에는 키를 Character로 설정해서 오류가 났던 것 같았는데 String으로도 풀어보고 Chracter로도 풀어봤는데 둘 다 되는 것 보니 그냥 전에 풀었던 코드에 문제가 있었던 것 같다. 문제 자체는 그렇게 어렵지는 않았다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] 크기가 작은 부분 문자열 (0) | 2023.06.29 |
|---|---|
| [프로그래머스][JAVA][Lv. 1] 카드 뭉치 (0) | 2023.06.29 |
| [프로그래머스][JAVA][Lv. 1] 개인정보 수집 유효기간 (0) | 2023.06.28 |
| [프로그래머스][JAVA][Lv. 1] 둘만의 암호 (0) | 2023.06.26 |
| [프로그래머스][JAVA][Lv. 1] 덧칠하기 (0) | 2023.05.22 |