-
[프로그래머스 Level 1] 추억 점수 (JavaScript)Coding Test/JavaScript 2024. 11. 25. 16:50
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/176963
입출력 예
name yearning photo result ["may", "kein", "kain", "radi"] [5, 10, 1, 3] [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]] [19, 15, 6] ["kali", "mari", "don"] [11, 1, 55] [["kali", "mari", "don"], ["pony", "tom", "teddy"], ["con", "mona", "don"]] [67, 0, 55] ["may", "kein", "kain", "radi"] [5, 10, 1, 3] [["may"],["kein", "deny", "may"], ["kon", "coni"]] [5, 15, 0] 풀이
function solution(name, yearning, photo) { const result = []; const score = name.reduce((acc, cur, idx) => { acc[cur] = yearning[idx]; return acc; }, {}); for(let i=0; i < photo.length; i++) { let sum = 0; const photoArray = photo[i]; for(let j=0; j < photoArray.length; j++) { if(score[photoArray[j]]) { sum += score[photoArray[j]]; } } result.push(sum); } return result; }
함수 solution은 3개의 매개변수를 받는다.
1. 이름 배열 = name
2. 이름에 대응하는 그리움 점수 배열 = yearning
3. 사진 속 이름 배열을 포함하는 2차원 배열 = photo
추가적으로 하나의 배열을 더 선언했다.
1. 각 사진들의 추억 점수를 저장할 배열 = result
먼저 reduce 메서드를 통해 name과 yearning을 점수 매핑 객체인 score로 변환했다.
이렇게 매핑하면 { "이름": 점수 ... } 형태로 나타난다.
이후 사진 속 사람들의 점수를 계산한다.
외부 for 루프를 통해 photo 배열을 순회하며 각 사진에 대해 점수를 계산한다.
이후 현재 사진의 추억 점수를 저장할 수 있는 sum 변수를 선언했고,
내부 for 루프를 통해 해당 사진의 이름 배열을 순회하며 각 이름의 점수를 합산시켰다.
- score[photoArray[j]] = 이름에 해당하는 점수를 확인
- 이름이 없으면 undefined이므로 아무런 작업을 하지 않음
이후 모든 사진의 추억 점수를 계산환 결과인 result를 반환한다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 폰켓몬 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] 카드 뭉치 (JavaScript) (1) 2024.11.25 [프로그래머스 Level 1] 명예의 전당 (1) (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] [1차] 비밀지도 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 2] 멀리 뛰기 (JavaScript) (0) 2024.11.24