본문 바로가기

코테/프로그래머스

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

728x90

[Level 1] 추억 점수

문제 링크

구분

코딩테스트연습 > 연습문제

풀이 요약

주어진 이름 배열, 그리움 배열을 매핑하여 각 사진에 포함된 이름들의 그리움 점수 합계를 계산하여 반환하는 단순 구현 문제

나의 풀이

function solution(name, yearning, photo) {
    let temp={};
    
    for(let i=0; i<name.length; i++){
        temp[name[i]]=yearning[i]
    }
    
    return photo.map((arr)=>arr.reduce((acc,cur)=>acc+(temp[cur]||0),0))
}

for문에서는 주어진 name 배열과 yearning 배열을 사용해서 각 이름을 키값으로 지정하고 그리움 점수를 값으로 하는

객체 temp 배열을 생성했습니다.

또한, 각 사진 배열을 순회하기 위해 map 메서드를 이용했고 이를 그리움 점수를 합산하기 위해 reduce 메서드를 이용했습니다.

 

예를 들자면, 다음과 같은 예시가 있다고 가정합니다.

const name = ["Alice", "Bob", "Charlie"];
const yearning = [5, 10, 3];
const photo = [["Alice", "Bob"], ["Bob", "Charlie"], ["David"]];

 

그러면 아래와 같은 temp 객체가 생성됩니다.

{
  "Alice": 5,
  "Bob": 10,
  "Charlie": 3
}

photo [0]은 ["Alice", "Bob"]이고,

temp ["Alice"]=5

temp ["Bob"]=10

합계 5+10=15가 됩니다.

 

photo [1]은 ["Bob", "Charlie"]이고,

temp ["Bob"]=10

temp ["Charlie"]=3

합계 10+3=13이 됩니다.

 

photo [2]는 ["David"]이고,

이는 temp ["David"]=undefined입니다. 따라서 acc (temp ['David'] || 0)는

0 + 0이므로 합계는 0입니다.

배운 점

해시맵을 사용해서 데이터 매핑을 효율적으로 저장하고 조회하는 방법을 배울 수 있었습니다!

728x90