계발하는 개발자

[프로그래머스/Lv.1] 추억 점수 본문

🖥 Computer Science/Algorithm

[프로그래머스/Lv.1] 추억 점수

dev_genie 2023. 11. 25. 19:43

⚙️ 문제 설명


⚠️ 제한 사항


🔃 입출력


📜 입출력 예 설명


🧠 나의 풀이

function solution(name, yearning, photo) {
    // 객체에 인물 이름과 그리움 점수 저장     
    const obj = {};
    for (let x = 0; x < name.length; x++) {
        obj[name[x]] = yearning[x];
    }

    // 결과 출력을 위한 배열 생성
    const arr = [];

    // 배열에 값 전송     
    for (const people of photo) {
        let initNum = 0;
        for (const person of people) {
            initNum += obj[person] || 0;
        }
        arr.push(initNum);
    }

    return arr;
}

 

🧐 풀이 설명

name 배열 값에 따라 yearning 배열 값이 매칭되야 하므로 두 값을 객체 속성:값으로 만들어줬다.

그리고 출력된 결과를 배열 형태로 나타내야 하기 때문에 const arr = []; 빈 배열값을 가지는 상수 변수를 만들어주고, for문을 돌면서 객체 속성 값이 기존 값에 더해진 형태로 배열에 push 시켜줬다.

객체 처음 생성했을 당시에는 객체에 저장된 속성값이 빈값이므로 undefined가 나오기 때문에(false 처리)

initNum += obj[person] || 0 을 해줘서 해당 속성명을 찾을 수 없는 경우에는 처음에 0을 더하다가 for문을 돌고 난 후의 시점에 객체에 초기 속성값이 생성되니까 2번째로 해당 코드블럭을 만났을 때는 해당 속성값을 기존값에 더하는 식으로 반복하며 기존값에 값을 누적해서 더하게 된다.

 

이런 구조의 문제는 Lv.0에서도 많이 등장했는데 Lv.1답게 출제지문만 좀더 길어지고, 비교하는 값이 추가된 형태로 등장했다.

 

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/176963

LIST
profile

dev_genie

@dev_genie

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!