사람들의 이름이 담긴 name 배열과 각 사람의 추억 점수가 담긴 yearning 배열이 주어진다.
또한 여러 장의 사진이 담긴 photo 배열이 주어질 때,
각 사진에 등장하는 사람들의 추억 점수의 합을 구하여 배열로 반환하는 문제이다.
만약 사진에 있는 사람이 name 배열에 없다면 추억 점수는 0점으로 계산한다.
이름과 추억 점수를 빠르게 찾기 위해 HashMap을 사용한다.
먼저 name과 yearning을 이용하여
형태로 저장한다.
이후 사진을 한 장씩 확인하면서 등장하는 사람의 점수를 HashMap에서 찾아 모두 더한다.
HashMap의 getOrDefault()를 사용하면 이름이 없는 경우 자동으로 0을 반환하므로 예외 처리를 따로 하지 않아도 된다.
scoreMap.getOrDefault(person, 0);
HashMap을 생성하여 이름과 추억 점수를 저장한다.name과 yearning 배열을 이용해 HashMap을 채운다.answer 배열을 생성한다.answer 배열에 저장한다.answer 배열을 반환한다.import java.util.HashMap;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
HashMap<String, Integer> scoreMap = new HashMap<>();
for (int i = 0; i < name.length; i++) {
scoreMap.put(name[i], yearning[i]);
}
int[] answer = new int[photo.length];
for (int i = 0; i < photo.length; i++) {
int sum = 0;
for (int j = 0; j < photo[i].length; j++) {
String person = photo[i][j];
sum += scoreMap.getOrDefault(person, 0);
}
answer[i] = sum;
}
return answer;
}
}