알고리즘

[프로그래머스] 추억 점수

예림밈 2025. 12. 22. 18:01
728x90

인턴 생활 + 적응 + 하반기 취준 준비로 정신이 없어서 코딩 테스트 준비를 하지못하였다..  내년 상반기를 위해 다시 코딩 테스트 준비를 해보려고 한다! 

클라우드 위주로 공부하니까 Java 문법을 정말 많이 까먹었다 ㅠㅠ 우선 감을 잡기 위해 Level 1~2 부터 차근차근 해보자!


문제 : 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다.

 

풀이 : 단순 배열 순회 문제라고 생각해서 풀었다,.

 

1차 코드 : 정답이지만, 문법이 기억이 안나서 너무 코드가 길어진 것 같아 아쉬웠다.

import java.util.*;
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        Map<String,Integer> map=new HashMap<>();
        for (int i=0; i<name.length; i++){
            map.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++){
                sum+=map.getOrDefault(photo[i][j],0);            
            }
            answer[i]=sum;
        }
        return answer;
    }
}

 

 

2차 코드 

import java.util.*;
import java.util.stream.*;
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        Map<String,Integer> scoreMap = IntStream.range(0,name.length)
            .boxed()
            .collect(Collectors.toMap(i->name[i],i->yearning[i]));
        
        return Arrays.stream(photo)
            .mapToInt(p->Arrays.stream(p)
                .mapToInt(person->scoreMap.getOrDefault(person,0))
                .sum())
            .toArray();
    }
}

 

 

 

* 문법 정리

  • boxed()
    • 기본형 : int, long,double (가볍고 빠름)
    • 참조형 : Integer, Long, Double (객체, 기능을 가짐)
    • 역할 : 기본형을 객체형으로 포장한다.

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/176963

728x90

'알고리즘' 카테고리의 다른 글

[프로그래머스] 요격 시스템  (0) 2025.12.24
[프로그래머스] 기사단원의 무기  (0) 2025.12.23
[백준]- 2225번  (0) 2025.05.17
[Softeer] - 우물 안 개구리  (2) 2025.04.25
[Softeer] - 성적 평균  (0) 2025.04.25