https://school.programmers.co.kr/learn/courses/30/lessons/82612?language=kotlin
문제
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.
제한사항
놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수
풀이
class Solution {
fun solution(price: Int, money: Int, count: Int): Long {
val totalPrice : Long = (price * (count + 1L)) * count / 2
return if (money < totalPrice) totalPrice - money else 0L
}
}
- 결과적으로 해당문제는 count만큼 이용한 이용료수열의 총합이 현재 money보다 작다면 0을 반환하고 그게 아니라면 모자란 만큼의 돈을 반환하라고 요구하고 있습니다. 여기서 중요한 것은 수열의 총합을 어떻게 구할지입니다. 수열의 총합은 반복문으로도 구할 수 있지만 count가 커지면 커질수록 연산이 많아집니다. 그렇다면 수열의 합공식을 이용한다면 count가 최대로 커진다 해도 연산 한 번으로 값이 나오기 때문에 더 안정적으로 풀 수 있습니다.
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 3진법 뒤집기 (Kotlin) (0) | 2023.08.05 |
---|---|
[프로그래머스] - 배열 두배 만들기 (Kotlin) (0) | 2023.08.05 |
[프로그래머스] - 콜라츠 추측 (Kotlin) (0) | 2023.08.04 |
[프로그래머스] - 숫자 문자열과 영단어 (Kotlin) (0) | 2023.08.04 |
[프로그래머스] - K번째수 (Kotlin) (0) | 2023.08.04 |