회고
문제풀이에 있어서 반복문을 사용하게 되면 그만큼 많은 수행을 한다는 것을 의미한다. 문제풀이에 있어서 반복문을 아예 사용하지 않을 수는 없으나, 가능하면 반복문을 사용하지 않는 선에서 문제풀이가 가능하지 생각 해 볼 필요가 있다.
이번 문제의 경우 수학적 공식을 이용하면, 반복문을 사용하지 않고도 해결가능했다.
문제풀이
https://school.programmers.co.kr/learn/courses/30/lessons/82612?language=python3
def solution(price, money, count):
sum = 0
for i in range(1, count+1):
sum += price * i
if sum-money > 0:
return sum-money
else:
return 0
def solution(price, money, count):
result = sum([i*price for i in range(1, count +1)]) - money
if result > 0:
return result
else:
return 0
def solution(price, money, count):
return sum([i*price for i in range(1, count +1)]) - money if sum([i*price for i in range(1, count +1)]) - money > 0 else 0
# 등차수열을 이용한 풀이
def solution(price, money, count):
return max(0,price*(count+1)*count//2-money) # 뒤에 값이 마이너스 값이 나오면 0이 최대값이 된다.
a = solution(1, 20,4)
print(a)
max()
max() 메서드의 매개변수로 순회가능한 자료를 주어서 가장 큰 값을 가지고 오는 것이다.
위의 풀이에서 max(0, 결과값)을 줌으로써 두개 중 결과값에 대한 조건이 맞을 경우 0을 리턴하는 식으로 풀이를 했다.