문제
나의코드
const solution = (name, yearning, photo) => {
const nameYearningMap = new Map();
for(let i = 0; i < name.length; i++) {
let value = 0;
if(i < yearning.length) {
value = yearning[i];
}
nameYearningMap.set(name[i], value);
}
return photo.map((x, i) => {
return x.reduce((prev, curr) => {
if(!nameYearningMap.has(curr)) return prev;
else return prev + nameYearningMap.get(curr);
}, 0);
})
}
로직흐름
- name의 각 그리움 점수를 Map object에 저장한다.
- 1.에서 Map object에 저장할 때, 만약 name과 yearning의 배열의 길이가 다르다면, yearning이 없는 값은 0을 저장한다.
- photo에 map메소드를 사용해서 각각의 요소의 그리움 합을 구한 것으로 값을 변경한다.
그리움 합을 구할 땐 reduce를 사용했다.
만약 Map Object의 key값이 없는 요소가 있다면 해당 값은 0이라고 간주했다.
- 3.에서 요소가 바뀐 배열을 반환한다.