-
[프로그래머스 Level 1] 기사단원의 무기 (JavaScript)Coding Test/JavaScript 2024. 12. 2. 17:08
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/136798
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력 예
number limit power result 5 3 2 10 10 3 2 21 풀이
function solution(number, limit, power) { const attackPoint = new Array(number).fill(0); for(let i=1; i<=number; i++) { for(let j=1; j<=Math.sqrt(i); j++) { if(i % j === 0) { attackPoint[i-1]++; if(j !== i / j) { attackPoint[i-1]++; } } } } for(let i=0; i<number; i++) { if(attackPoint[i] > limit) { attackPoint[i] = power; } } return attackPoint.reduce((acc, cur) => acc + cur); }
함수 solution은 세 개의 매개변수를 받는다.
1. 기사단에 속한 기사의 수: number
2. 공격력의 상한선, 공격력이 limit이면 power로 변환: limit
3. 공격력이 limit을 초과하는 무기의 공격력을 이 값으로 설정: power
먼저 attackPoint 배열을 통해 각 기사의 공격력을 저장할 배열을 선언했다.
i는 각 기사의 번호 (1부터 number)까지이고,
j는 i의 약수이다. i를 j로 나누었을 때 나누어떨어지면 j는 i의 약수이다.
attackPoint[i-1]은 i번째 기사의 공격력을 나타낸다.
Math.sqrt(i)까지 반복하면서 약수를 구한다.
예를 들어, i = 12이면 약수는 1, 2, 4, 6, 12이다.
이 때, j가 i / j와 같지 않으면 두 개의 약수를 모두 카운트 한다.
( ex) j = 2일 때, 12 / 2 = 6이므로 두 약수를 모두 더한다. )
이 단계를 통해 각 기사의 공격력은 각 번호의 약수의 개수로 설정된다.
이후 for문을 통해 공격력이 limt를 초과하면 power로 설정한다.
이후 return문을 통해 attackPoint 배열의 모든 값을 더한다. 이 값이 전체 기사단의 총 공격력이다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 과일 장수 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 모의고사 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 2016년 (JavaScript) (0) 2024.12.02 [프로그래머스 Level 1] 폰켓몬 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] 카드 뭉치 (JavaScript) (1) 2024.11.25