<로직 고민/>
- 음 약간 등차수열?? 이런 거 활용해야 할 거 같은데...
- 함수가 있을 거 같은데 ...찾아볼까..그냥 풀까...
- 그냥 다 풀고 찾자!
<완성된 코드/>
- 첫 번째 풀이
def solution(price, money, count):
spend_list = [price * count]
for i in range(1, count):
spend_list.append(price * i)
spend = sum(spend_list)
spend -= money
return spend if spend > 0 else 0
- 두 번째 풀이
def solution(price, money, count):
spend = price * count
spend_list = []
while spend >= price:
spend_list.append(spend)
spend -= price
spend = sum(spend_list)
spend -= money
return spend if spend > 0 else 0
- while문 사용할 수도 있지 않을까 싶어서 이렇게 풀어봤다
- 세 번째 풀이
def solution(price, money, count):
spend = price * count
sum_spend = 0
while spend >= price:
sum_spend += spend
spend -= price
sum_spend -= money
return sum_spend if sum_spend > 0 else 0
- 가만보니 리스트를 고집할 이유가 없는 것 같아서 이렇게 풀어봤다
- 네 번째 풀이
def solution(price, money, count):
sum_spend = 0
for i in range(1, count + 1):
sum_spend += price * i
sum_spend -= money
return sum_spend if sum_spend > 0 else 0
- 첫 번째 풀이에서 리스트를 없애봤다
- 다섯 번째 풀이
def solution5(price, money, count):
sum_spend = sum(range(price, price * count + 1, price))
sum_spend -= money
return sum_spend if sum_spend > 0 else 0
- 오 이거다...!! 이게 정답이네!!!!
- 등차수열의 합이라는 함수가 있는지는 모르겠지만 [파이썬 등차수열 합]이라고 검색하면서 깨달았는데 range() 함수를 이용하면 되는 거였다..!! 1,4번째 풀이에서 range 썼는데...!! 바로 앞에 두고 눈치도 못 챘네
<다른 사람 풀이/>
- 천재풀이1
def solution(price, money, count):
return max(0, price * (count + 1) * count // 2 - money)
- 아 range() 함수에 흥분하지 말고 쫌더 찾아볼걸..!!
- 이게 등차수열의 합 공식이라고 한다,,,,,{n * (n + 1)} / 2
- 파이썬 함수로 따로 있는 게 아니라 그냥 수학 공식을 파이썬으로 적용하면 되는 거였다
- max() 함수 쓰는 것도...!! 왜 생각하지 못 했을까ㅜㅜ
- 실행시간 미쳤다