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
의 개수를 줄이면서 값을 구했다.