문제출처


import java.util.HashMap;
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        
        HashMap<String,Integer> map = new HashMap<>();
        
        for(int i = 0; i < name.length; i++){
            map.put(name[i], yearning[i]);
        }
        
        int i = 0;
        
        for(String[] people : photo){
            int score = 0;
            
            for(String person : people){
                 if (map.containsKey(person)) {
                    score += map.get(person);
                 }
            }
            
            answer[i] = score;
            i++;
        }
        
        return answer;
    }
}

접근방법

그리워하는 사람의 이름과 그리움 점수가 주어지고, 사진에 찍힌 인물의 이름을 담은 이차원 배열이 주어지는데 사진에 찍힌 인물이어도 그리워하는 사람의 이름에 없는경우 그리움 점수가 없기 때문에 map의 containsKey를 생각하며 접근하였다.

우선 map에 key : 그리워하는 사람이름, value : 그리움점수로 저장한다.

주어진 사진에 찍힌 인물의 이름을 담은 이차원 photo 배열을 순회하며 각 사진의 찍힌 인물의 배열을 people에 저장했다.

people을 순회하며 각 인물의 이름을 person에 저장하였다. map에 person에 담긴 인물의 이름으로 저장된 key가 있다면 score 변수에 해당 key의 value를 더해준다. people 순회가 끝나면

위에서 선언했던 answer 배열에 차례대로 저장해준다. i는 인덱스 값을 의미한다.

마지막으로 answer배열을 반환해준다.