추억 점수

이지영·2025년 1월 10일

문제 풀이
먼저 주어진 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))
}

0개의 댓글