728x90
반응형
24년 12월 18일
해결한 문제 갯수: 30
문제 설명
문제 분석
- 이용료 price: 1 ≤ price ≤ 2,500
- 처음 가진 금액 money: 1 ≤ money ≤ 1,000,000,000
- 이용 횟수 count: 1 ≤ count ≤ 2,500
첫 번째 접근 : 반복문을 이용한 해결 (O(n))
function solution(price, money, count) {
let i = 1
let sum = 0
while(i <= count) {
sum += price * i
i++
}
return money - sum > 0 ? 0 : sum - money
}
1) while 루프를 사용해 각 회차별 금액을 계산합니다.
2) 1부터 count 까지 증가하는 배수를 누적합니다.
3) 최종 금액과 보유 금액을 비교하여 부족액을 반환합니다.
두 번째 접근: 등차수열의 합 공식(O(1))
function solution(price, money, count) {
const sum = count * (2 * price + (count - 1) * price) / 2
return money - sum > 0 ? 0 : sum - money
}
개선사항
- 등차수열의 합( Sₙ = n(a₁ + aₙ) / 2 )으로 문제를 해결합니다.
- 첫항: price (a₁)
- 마지막항: price * count (aₙ)
- 항의 개수: count (n)
- 공차: price (d)
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 (0) | 2024.12.20 |
---|---|
[프로그래머스] 시저암호 (0) | 2024.12.19 |
[프로그래머스] 외계어 사전 (0) | 2024.12.17 |
[프로그래머스] 숨어있는 숫자의 덧셈 (2) (0) | 2024.12.17 |
[프로그래머스] 치킨쿠폰 (0) | 2024.12.15 |