프로그래머스

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

코 밑 2024. 12. 28. 17:58
Contents

https://school.programmers.co.kr/learn/courses/30/lessons/176963

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

사진 안에는 여러명의 사람들이 있다.

그리고 그 사람들의 이름이 들어있는 배열과 사람에 대한 추억 점수가 들어있는 배열이 매개변수로 받게 된다.

또 매개변수로 하나 더 받아오는데 사진 여러장에 각각 있는 사람의 이름이 있는 이차원 배열이다.

 

만약 [may], [5], [may, tan] 이렇게 받아오면 최종 추억 점수는 5점인 셈이다

얼마전 푼 문제에서 HashMap을 사용해서 이번에도 사용해보았다.

key에는 사람의 이름, value에는 그 사람에 해당하는 점수를 넣어서 사람의 이름이 나올 때마다 그 이름에 해당하는 점수를 출력해서 사용했다.

 

// 프포그래머스 추억 점수
// 사진 속의 인물의 그리움 점수의 합게가 해당 사진의 추억 점수
// map으로 점수랑 이름이라 같이 씀
import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        // 멤버 리스트를 map에다가 바꿔줌. 키엔 이름, 값엔 점수를 넣어줌
        Map<String, Integer> namemap = new HashMap<>();
        // name이 yearing보다 길수도 있음
        for (int i = 0; i < yearning.length; i++) {
            namemap.put(name[i], yearning[i]);
        }

        // 이름 비교해서 점수 합
        for (int i = 0; i < photo.length; i++) {
            for (int j = 0; j < photo[i].length; j++) {
                for (int k = 0; k < name.length; k++) {
                    if (photo[i][j].equals(name[k])) {
                        answer[i] += namemap.get(name[k]);
                    }
                }
            }
        }
        return answer;
    }
}

 

3중 for문은 사용하고 싶지 않았는데 다른 사람들 모두 써서 그냥 써버렸다

잘하면 2중으로도 해결할 수 있을지도!?

 

Heath RIP