프로그래머스 - 추억점수

윤민선·2026년 7월 22일

프로그래머스

목록 보기
50/65

문제 설명

사람들의 이름이 담긴 name 배열과 각 사람의 추억 점수가 담긴 yearning 배열이 주어진다.

또한 여러 장의 사진이 담긴 photo 배열이 주어질 때,

각 사진에 등장하는 사람들의 추억 점수의 합을 구하여 배열로 반환하는 문제이다.

만약 사진에 있는 사람이 name 배열에 없다면 추억 점수는 0점으로 계산한다.


접근 방법

이름과 추억 점수를 빠르게 찾기 위해 HashMap을 사용한다.

먼저 nameyearning을 이용하여

  • 이름 → 추억 점수

형태로 저장한다.

이후 사진을 한 장씩 확인하면서 등장하는 사람의 점수를 HashMap에서 찾아 모두 더한다.

HashMapgetOrDefault()를 사용하면 이름이 없는 경우 자동으로 0을 반환하므로 예외 처리를 따로 하지 않아도 된다.

scoreMap.getOrDefault(person, 0);

풀이 순서

  1. HashMap을 생성하여 이름과 추억 점수를 저장한다.
  2. nameyearning 배열을 이용해 HashMap을 채운다.
  3. 사진 개수만큼 결과를 저장할 answer 배열을 생성한다.
  4. 사진을 한 장씩 확인하면서 등장하는 사람의 추억 점수를 모두 더한다.
  5. 계산한 점수를 answer 배열에 저장한다.
  6. 모든 사진의 점수가 담긴 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;
    }
}

0개의 댓글