https://school.programmers.co.kr/learn/courses/30/lessons/176963
input
: 인물 (1차원 배열), 인물에 해당하는 추억 점수 (1차원 배열), 사진 (2차원 배열)
return
: 각 사진 당 추억 점수
Requirement
: input에서 주어진 인물이 아닐 경우 0점으로 계산
import java.util.HashMap;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo){
int[] answer = new int[photo.length];
// 인물 - 추억 점수를 map으로 저장
HashMap<String,Integer> memory = new HashMap<>();
// map에 값 세팅
for(int i = 0 ; i < name.length ; i++){
memory.put(name[i], yearning[i]);
}
int j = 0; // answer 배열의 index
for(String[] ph : photo){
int temp = 0; // 현재 배열의 추억 점수를 저장할 변수
for(int i = 0 ; i < ph.length ; i++){
if(memory.containsKey(ph[i])){ // key 값을 가지고 있을 때 연산
temp += memory.get(ph[i]);
}
}
answer[j++] = temp; // 이번 배열의 추억 점수를 세팅
}
return answer;
}
}
0.04 ~ 2.22ms
테스트 1 〉 통과 (0.04ms, 72MB)
테스트 2 〉 통과 (0.04ms, 75MB)
테스트 3 〉 통과 (0.17ms, 77MB)
테스트 4 〉 통과 (0.13ms, 76MB)
테스트 5 〉 통과 (0.38ms, 78.4MB)
테스트 6 〉 통과 (0.67ms, 83MB)
테스트 7 〉 통과 (0.75ms, 79.8MB)
테스트 8 〉 통과 (1.10ms, 92.6MB)
테스트 9 〉 통과 (0.76ms, 83.2MB)
테스트 10 〉 통과 (2.02ms, 87.4MB)
테스트 11 〉 통과 (2.22ms, 101MB)
테스트 12 〉 통과 (0.87ms, 89.5MB)
테스트 13 〉 통과 (0.09ms, 77.5MB)
테스트 14 〉 통과 (0.02ms, 67.5MB)
for(int i = 0 ; i < ph.length ; i++){
if(memory.containsKey(ph[i])){
temp += memory.get(ph[i]);
}
}
위 부분에서 if(memory.containsKey(ph[i]))
조건을 걸지 않았을 경우 NullPointerException
에러가 발생한다.
찾아보니 hashmap.get()
연산의 경우 존재하지 않는 key값을 조회하려고 시도하면 null을 리턴한다. 이 부분에서 에러가 발생하는 것은 아니고, null 값을 temp에 더하려고 연산할 때 에러가 발생한다.