[JS] Programmers 176963 추억 점수

서연주·2023년 7월 5일
0

Algorithm

목록 보기
12/25

썸네일_제목은 PRGM 176963 추억 점수, 부제목은 JavaScript 분류는 Algorithm

'추억 점수'

Programmers '추억 점수' 문제 보러가기

풀이 코드

map 구문이 중첩되는 것을 피하려고 미리 인물 별 그리움 점수를 별도로 정리해서 풀이하였다.

function solution(name, yearning, photo) {
    var answer = [];
    let name_yearning = {};
    
    // 사용하기 편하도록 인물 별 그리움 점수 별도 정리
    name.map((el,i)=>{
        // 변수 내용을 key로 삽입하고 싶다면 점 표기법 말고 대괄호 표기법!
        name_yearning[el] = yearning[i];
    })
    
    // 사진 별 점수 계산
    photo.map((paper, i) => {
        let sum=0;
        paper.map((person)=>{
            if(name.includes(person) == true){
                sum+=name_yearning[person];
            }
        })
        answer.push(sum);
    });
    
    return answer;
}

개선하기

  1. if문을 삼항 연산자로 바꿔 코드를 더 간결하게
  2. reduce 메서드를 사용한 결과 리턴

    reduce 함수는 배열의 요소를 순차적으로 순회하며 하나의 값(숫자/배열/객체 등)으로 줄여 return 하는 함수다.
    즉, 배열을 기반으로 하나의 값을 도출할 때 사용된다.

function solution(name, yearning, photo) {
    let name_yearning = {};
    
    name.map((el,i)=>{
        name_yearning[el] = yearning[i];
    })
    
    return photo.map((paper, i) => 
        paper.map(person=> name_yearning[person] ? name_yearning[person] : 0).reduce((sum, cur)=> sum+cur, 0)
    );
}

참고 자료

profile
pizz@ttang

0개의 댓글