관리 메뉴

개발 쥬스

[프로그래머스/Java] 179963 추억 점수 본문

알고리즘

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

DevJuice 2024. 10. 23. 14:31
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

🔍  해결 과정

 

Java의 Map 자료구조를 활용하여 문제를 해결할 수 있습니다. 해결 과정의 내용은 다음과 같습니다.

1️⃣ [사진 속 인물 이름, 그리움 점수] 형태의 map 자료구조를 활용하여 name과 yearning의 내용을 매핑한다.
2️⃣ 문제의 조건에 맞게 photo의 내용을 가져와 각 사진마다의 그리움 점수를 계산한다.
3️⃣ 여기서 name에 있는 내용과는 별개의 인물이 photo에 존재하는데 이 때는 map 자료구조의 getOrDefault() 메서드를 활용하여 기본값을 0으로 설정함으로써 그리움 점수를 0으로 처리한다.

 


✏️ 코드

/**
추억 점수: 사진 속 인물의 그리움 점수를 모두 합산한 점수이다.
**/
import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        // 사진 속 인물, 그리움 점수
        Map<String, Integer> map = new HashMap<>();
        int len = photo.length;
        int nameLen = name.length;
        int[] answer = new int[len];
        
        for (int i = 0; i < nameLen; ++i) {
            map.put(name[i], yearning[i]);
        }
        
        int idx = 0;
        for (String[] p : photo) { // 사진 속 인물들이 배열로 주어짐
            for (String n : p) {
                answer[idx] += map.getOrDefault(n, 0);
            }
            ++idx;
        }
        
        return answer;
    }
}

 

반응형