[lv.1] 기사단원의 무기 | 프로그래머스
[lv.1] 기사단원의 무기 | 프로그래머스
📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)
✏️ (lv.1) : 기사단원의 무기
각 기사에게는 1
부터 number
까지 번호가 지정되어 있다. 각 기사는 자신의 기사 번호의 약수 개수
에 해당하는 공격력을 가진 무기를 구매하려 한다. 이때, 구매하려는 무기의 공격력이 limit
보다 클 경우, 공격력이 power
에 해당하는 무기를 구매한다. 기사단이 구매한 모든 무기의 공격력의 합을 return하는 solution을 작성하라.
1 <=
number
<= 1000002 <=
limit
<= 1001 <=
power
<=limit
약수의 개수를 number
만큼 구해야 하기 때문에 시간복잡도가 낮은 알고리즘이 필요하다.
fill()
과map()
메소드를 이용해 배열에1
~number
까지 숫자를 채우는 동시에 로직을 진행한다.Math.sqrt()
를 이용해 제곱근을 구하고target
과 비교해가며 약수를 구한다.
1 | function solution(number, limit, power) { |
2 | let result = 0; |
3 | const arr = Array(number).fill().map((e, i) => { |
4 | let target = i+1; |
5 | return devisor(target); |
6 | }); |
7 | |
8 | arr.forEach((e) => { |
9 | if (e > limit) { |
10 | result += power; |
11 | } else { |
12 | result += e; |
13 | } |
14 | }); |
15 | |
16 | return result; |
17 | } |
18 | |
19 | const devisor = (target) => { |
20 | let result = new Set(); |
21 | for (let i=1; i<Math.sqrt(target)+1; i++) { |
22 | if (target%i === 0) { |
23 | result.add(i); |
24 | if (target/i != 0) result.add(target/i); |
25 | } |
26 | }; |
27 | |
28 | return result.size; |
29 | }; |
👨💻 관련 포스트
[lv.1] 개인정보 수집 유효기간
[lv.1] 개인정보 수집 유효기간
프로그래머스 lv.1 개인정보 수집 유효기간 풀이 with javascript. 해당 문제에서 한달은 28일로 고정이다. 따라서 today와 privacies 각 원소(개인정보)의 날짜를 년, 월, 일에 각 단위에 해당하는 수 * 28을 수행하여 일 단위로 변환한 후 terms에 해당하는 수를 더해 문제를 해결한다.
2023-05-30
[lv.1] 성격 유형 검사하기 | 프로그래머스
[lv.1] 성격 유형 검사하기 | 프로그래머스
프로그래머스 lv.1 성격 유형 검사하기 풀이 with javascript. javascript의 객체를 이용해 성격 유형(이하 MBTI)별 획득 점수를 기록하고 MBTI의 value를 비교해 문제를 해결한다.
2023-06-01
[lv.2] 주차 요금 계산 | 프로그래머스
[lv.2] 주차 요금 계산 | 프로그래머스
프로그래머스 lv.2 주차 요금 계산 풀이 with javascript. javascript의 객체를 이용해 차량의 입/출차 시간을 기록, 해당 객체를 순회하며 주차시간을 주어진 요금표에 맞게 정산하는 것으로 문제를 해결한다.
2023-06-04
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!