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
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 폰켓몬 (0) | 2024.08.01 |
---|---|
[프로그래머스] 2016년 (0) | 2024.07.29 |
[프로그래머스] 푸드 파이트 대회 (0) | 2024.07.25 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2024.07.25 |
[프로그래머스] 자릿수 더하기 (0) | 2024.07.25 |