문제 설명
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 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는 자연수
1차 고민
for문 돌려서 totalPrice를 구하고 money를 빼면 되겠다.
1차 코드
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{
var totalPrice = 0
for i in 1...count {
totalPrice += (i * price)
}
var answer:Int64 = Int64((totalPrice - money))
return answer
}
1차 결과

2차 고민
왜 하나만 틀렸을까... 로직에는 문제가 없어보여서 totalPrice1로 변수 이름을 바꿔서 해보았는데도 결과가 똑같았다.
그런데 문제에 조건이 하나 있더라.
금액이 부족하지 않으면 0을 리턴해야한다.
전혀 구현되어있지 않아서 그런 것 같다.
if로 음수이면 리턴 0을 넣어야겠다.
2차 코드
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{
var totalPrice = 0
for i in 1...count {
totalPrice += (i * price)
}
var answer:Int64 = Int64((totalPrice - money))
if answer < 0 {
return 0
}
return answer
}
2차 결과

보완점
문제를 끝까지 읽자. 쉽다고 그냥 넘기면 틀린다.
다른 사람의 코드
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int{
return max((count + 1) * count / 2 * price - money , 0)
}
굉장한 수학 식이다.
보고 배울 점이 많아보인다.
그리고 개인적으로 생각한건데 if문을 추가하지 말고 삼항연산자를 통해 false이면 0을 주는 것도 가능했겠다.
'iOS > Programmers' 카테고리의 다른 글
[Swift] lv.1 행렬의 덧셈 | Programmers (0) | 2024.03.18 |
---|---|
[Swift] lv.1 문자열 다루기 기본 | Programmers (2) | 2024.03.15 |
[Swift] 문자열 내림차순으로 배치하기 | Programmers (0) | 2024.03.13 |
[Swift] lv.1 약수의 개수와 덧셈 | Programmers (1) | 2024.03.12 |
[Swift] lv.1 가운데 글자 가져오기 | Programmers (0) | 2024.03.11 |
문제 설명
새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 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는 자연수
1차 고민
for문 돌려서 totalPrice를 구하고 money를 빼면 되겠다.
1차 코드
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{
var totalPrice = 0
for i in 1...count {
totalPrice += (i * price)
}
var answer:Int64 = Int64((totalPrice - money))
return answer
}
1차 결과

2차 고민
왜 하나만 틀렸을까... 로직에는 문제가 없어보여서 totalPrice1로 변수 이름을 바꿔서 해보았는데도 결과가 똑같았다.
그런데 문제에 조건이 하나 있더라.
금액이 부족하지 않으면 0을 리턴해야한다.
전혀 구현되어있지 않아서 그런 것 같다.
if로 음수이면 리턴 0을 넣어야겠다.
2차 코드
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{
var totalPrice = 0
for i in 1...count {
totalPrice += (i * price)
}
var answer:Int64 = Int64((totalPrice - money))
if answer < 0 {
return 0
}
return answer
}
2차 결과

보완점
문제를 끝까지 읽자. 쉽다고 그냥 넘기면 틀린다.
다른 사람의 코드
import Foundation
func solution(_ price:Int, _ money:Int, _ count:Int) -> Int{
return max((count + 1) * count / 2 * price - money , 0)
}
굉장한 수학 식이다.
보고 배울 점이 많아보인다.
그리고 개인적으로 생각한건데 if문을 추가하지 말고 삼항연산자를 통해 false이면 0을 주는 것도 가능했겠다.
'iOS > Programmers' 카테고리의 다른 글
[Swift] lv.1 행렬의 덧셈 | Programmers (0) | 2024.03.18 |
---|---|
[Swift] lv.1 문자열 다루기 기본 | Programmers (2) | 2024.03.15 |
[Swift] 문자열 내림차순으로 배치하기 | Programmers (0) | 2024.03.13 |
[Swift] lv.1 약수의 개수와 덧셈 | Programmers (1) | 2024.03.12 |
[Swift] lv.1 가운데 글자 가져오기 | Programmers (0) | 2024.03.11 |