728x90

🔗 추억 점수

첫 번째 테스트케이스

사진 속 인물들의 이름과 그리움 점수를 기반으로 각 사진의 추억 점수를 계산하는 문제이다. photo에 name이 있으면 해당하는 점수(yearning)를 더하면 된다.

 

🥊 접근 방법 🥊

보자마자 HashMap의 contains 메서드가 떠올랐다. 시간복잡도는 O(1)이다.

 

1. HashMap

name과 yearning을 <Key, Value> 형태로 담기 위해 HashMap<String, Integer>를 사용해 각 인물의 이름과 그 인물의 그리움 점수를 매핑한다.

HashMap<String, Integer> hash = new HashMap<>();

 

2. 추억 점수 계산

photo 배열을 순회하면서 각 사진에 대해 해당 사진에 등장하는 인물들의 그리움 점수를 합산한다. 이때, 사진 속 인물의 이름이 해시맵에 존재하는 경우에만 그리움 점수를 더한다.

// photo 배열 순회
for(int i=0; i<photo.length; i++){
    int sum = 0;
    for(int j=0; j<photo[i].length; j++){
        if(hash.containsKey(photo[i][j])) {  // 사진 속 인물의 이름이 해시맵에 존재하는 경우
            sum += hash.get(photo[i][j]);  // 그리움 점수를 더한다
        }
    }
    answer[i] = sum;
}

 

✨ 전체코드 ✨

  • name : 그리워하는 사람의 이름을 담은 문자열 배열
  • yearning : 각 사람별 그리움 점수를 담은 정수 배열
  • photo : 각 사진에 찍힌 인물의 이름을 담은 이차원 문자열 배열
import java.util.*;
import java.io.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {

        int[] answer = new int[photo.length];
        HashMap<String, Integer> hash = new HashMap<>();
        
        for(int i=0; i<name.length; i++){
            hash.put(name[i], yearning[i]);
        }
        
        for(int i=0; i<photo.length; i++){
            int sum = 0;
            for(int j=0; j<photo[i].length; j++){
                if(hash.containsKey(photo[i][j])) {
                sum += hash.get(photo[i][j]);
                }
            } answer[i] = sum;
        } return answer;
    }
}

 

🌀 성능

  • 메모리 : 73.5 MB
  • 시간 : 0.04 ms