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
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 공원 산책 (0) | 2024.06.16 |
---|---|
[프로그래머스] 타겟 넘버 (0) | 2024.06.09 |
[프로그래머스] 달리기 경주 (0) | 2024.05.23 |
[프로그래머스] DAY 3. 문자열 섞기 | 문자 리스트를 문자열로 변환하기 | 문자열 곱하기 | 더 크게 합치기 | 두 수의 연산값 비교하기 (0) | 2024.04.28 |
[프로그래머스] 올바른 괄호 (0) | 2024.03.09 |