
문제 풀이
먼저 주어진 name배열과 yearing배열을 map으로 키-값 쌍 형태로 저장해두었다.
그 후 이차원 배열을 순차적으로 돌면서 sum을 구한 후 result배열에 push해주는 방식으로 풀었다.
function solution(name, yearning, photo) {
let scoreMap = new Map();
let result = [];
for(let i = 0; i<name.length; i++){
scoreMap.set(name[i],yearning[i]);
}
photo.forEach((item)=>{
let sum = 0;
item.forEach((item2)=>{
sum += scoreMap.get(item2);
})
result.push(sum);
})
return result;
}
하지만 sum을 할 때 scoreMap.get(item2)이 undefined을 반환할 수 있는 경우를 생각하지 못해서 틀렸다.
문제에서 분명히 그리움 점수가 없을 때 라고 얘기를 해줬건만..
체크하지 못해서 오답 처리가 났다.
sum += scoreMap.get(item2);
=> ||0 을 추가
sum += scoreMap.get(item2) || 0;
function solution(name, yearning, photo) {
let scoreMap = new Map();
let result = [];
for(let i = 0; i<name.length; i++){
scoreMap.set(name[i],yearning[i]);
}
photo.forEach((item)=>{
let sum = 0;
item.forEach((item2)=>{
sum += scoreMap.get(item2)||0;
})
result.push(sum);
})
return result;
}
정답이다!
다른 사람의 풀이를 봤더니 참 간단하게도 풀었더라
function solution(name, yearing, photo) {
return photo.map((v) => v.reduce((a,c) => a+= yearing[name.indexOf(c)] ?? 0, 0))
}