자료구조 및 알고리즘/JavaScript Practice

[프로그래머스] 부족한 금액 계산하기

Ryomi 2024. 12. 18. 21:30
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
반응형