알고리즘

[알고리즘] 프로그래머스 Lv.1 - 추억 점수

로돌씨 2024. 3. 26. 20:11

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제설명

 

풀이

function solution(name, yearning, photo) {
  
  // 객체를 만들어 점수를 저장한다.
  // 객체는 키와 밸류값으로 저장됨
  // ex) {may: 5, kein: 10, kain: 1, radi: 3}
  const memory = {};
  for (let i = 0; i < name.length; i++) {
    memory[name[i]] = yearning[i];
    
  }
    //객체에서의 중괄호는 접근하려는 객체의 이름(키)을 검색하면 밸류값을 리턴함
    console.log(memory["may"]);
    
  // 각 포토 마다의 점수를 배열로 구해야 하므로 map을 이용한다.
  return photo.map((arr) =>
    // 각 요소 배열을 reduce 메서드를 이용해 점수를 구한다.
    // memory 객체에 해당 사람이 있으면 점수를 없으면 0을 더해준다.
    arr.reduce((acc, cur) => acc + (memory[cur] || 0), 0)
    
  );
}

 

느낀점

늘 배열로만 문제를 풀었어서 객체를 이용하는 방법에 소홀했었다... 그래서 어떻게든 이름과 점수를 연관지어보겠다고 반복문을 써가며 이름과 점수를 붙여도 코드도 복잡해지고 보기가힘들었는데 객체를 이용하니 너무도 깔끔하게 보기도 쉬웠고 값에 접근하기도 쉬웠다.

이런 점수와 관련된 문제가 많았는데 객체를 이용하는 방식을 자주 애용해야겠다!