안녕하세요

프로그래머스 JS [추억 점수] 본문

프로그래머스/Lv.1

프로그래머스 JS [추억 점수]

sakuraop 2023. 4. 12. 23:39

추억 점수 문제보기

문제 요약

이름 배열이 주어집니다. ["김","이","박"] 

이름 마다 점수가 정해져 있습니다. [1,5,10]

photo 배열이 주어집니다. [["김","장"]]

이름에 해당하는 점수의 합산을 반환합니다. [1]


문제 풀이

 
function solution(name, yearning, photo) {
  const nameScoreMap = new Map();
  name.forEach((item, index) => nameScoreMap.set(item, yearning[index]));

  const answer = photo.map((item) => {
    return item.map((name) => (nameScoreMap.get(name) ? nameScoreMap.get(name) : 0)).reduce((total, current, index, array) => total + current);
  });

  return answer;
}
 

Map또는 Object 객체를 이용하여 이름에 해당하는 점수 리스트를 만듭니다.

photo에는 여러 개의 배열이 들어 있고, 각 배열 안에는 여러 개의 이름이 들어 있습니다.

이름마다의 지정된 점수를 기록한 배열을 만든 뒤,

이 배열에서 점수의 합을 구합니다.

 

 
solution(
  ["may", "kein", "kain", "radi"],
  [5, 10, 1, 3],
  [
    ["may", "kein", "kain", "radi"],
    ["may", "kein", "brin", "deny"],
    ["kon", "kain", "may", "coni"],
  ]
);
 

=> [19, 15, 6]