
n : 거스름돈 액수 (1 ≤ n ≤ 100,000)
✅ 입력 조건
1. 거스름돈 액수 입력
✅ 출력 조건
1. 거스름돈의 동전 최소 개수 출력
2. 거슬러 줄 수 없으면-1출력
1단계) n이 5의 배수인지 확인하고, 맞다면 몫을 count에 더해주고 종료한다.
2단계) 5의 배수가 아니라면 n이 0이 될 때까지 n에서 2를 계속 빼주면서 그 횟수를 count한다.
위의 2가지 단계를 반복하면서 최소 동전 개수를 구한다.
만약 n에서 2를 뺀 값이 0보다 작으면, 이는 거스름돈을 줄 수 없는 상황이라고 할 수 있으므로 -1을 출력한다.
입력받기 →
while루프에서 n이 0 이하가 될 때까지 빼기 →
최종 시간복잡도
으로 제한 시간 내에 연산이 가능하다.
while문으로 반복하면서 거스름돈의 동전 최소 개수 구하기.
import sys
input = sys.stdin.readline
# 1. n을 입력
n = int(input())
# 2. while 루프 작성
count = 0
while True:
# 3. n이 5의 배수인지 확인
if n % 5 == 0:
count += n//5
break
# 4. 아닌 경우 2 빼고 count를 1씩 증가
else:
n -= 2
count += 1
if n < 0:
break
# 5. 만약 n이 0보다 작으면 종료 후 -1 출력
if n < 0:
print(-1)
else:
print(count)

while True:
# 3. n이 5의 배수인지 확인
if n % 5 == 0:
count += n//5
break
# 4. 아닌 경우 2 빼고 count를 1씩 증가
else:
n -= 2
count += 1
if n < 0:
print(-1)
break
print(count)
-1과 계산 과정에서 얻은 count값이 함께 출력되었다. n = int(input())
count = 0
while n > 0:
if n % 5==0:
count += n//5
break
n -= 2
count+=1
if n < 0:
print(-1)
else:
print(count)

n= int(input())
result = -1
for i in range(n//5,-1,-1):
if (n-i*5) % 2 == 0:
result = i + (n-i*5) // 2
break
print(result)

n을 5로 나눠준 값부터 0까지 i를 감소시킨다.n을 5로 나눠준 후 남은 값이 짝수이면 그 수만큼 합해서 동전의 개수로 출력해준다.-1을 출력해준다.2를 빼면서 값을 구했다면 이 풀이는 5의 개수를 줄이면서 값을 구했다.