코딩 테스트 연습/[프로그래머스] Python

[LV.2] 위클리 챌린지 > 부족한 금액 계산하기

duswjd_data 2025. 6. 20. 09:27

문제

https://school.programmers.co.kr/learn/courses/30/lessons/82612

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

  • 놀이기구 요금은 이용 횟수에 따라 누적 증가
    • 원래 이용료가 price원일 때, 놀이기구를 count번째 이용한다면 price*count원
  • 놀이기구를 count번 타게 되면 현재 가진 money에서 얼마가 부족한지를 반환
    • 단, 금액이 부족하지 않으면 0 반환
  • 제한사항
    - 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
    - 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
    - 놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수

첫 번째 시도 (성공)

def solution(price, money, count):
    total=0
    for i in range(1,count+1):
        total+=price*i
    return 0 if money>total else total-money

개선된 코드

def solution(price, money, count):
    total = sum(price*i for i in range(1, count+1))
    return max(0, total-money)

풀이 설명

  • sum(price*i for i in range(1, count+1))
    • 놀이기구를 1번부터 count번까지 이용할 때의 총 비용을 계산
  • max(0, total-money)
    • 부족한 금액이 음수(돈이 충분)일 경우 0을 반환