평범한 필기장

[BOJ_Python] 14916_거스름돈 본문

코딩 테스트 준비/BOJ

[BOJ_Python] 14916_거스름돈

junseok-rh 2023. 3. 18. 17:07

https://www.acmicpc.net/problem/14916

 

14916번: 거스름돈

첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.

www.acmicpc.net

어떻게 풀었는가 

  • 거스름돈을 2원짜리와 5원짜리로 못 주기 때문에 거스름돈을 못주는 돈은 1원과 3원이다.
  • 거스름돈 N이 5로 나누어지면 그 몫만큼 5원짜리 동전 개수를 추가해주고 나누어지지 않으면 2를 계속 뺴주면서 2원짜리 동전을 한개씩 추가해줬다.
n = int(input())

if n == 1 or n == 3:
    print(-1)
else:
    cnt = 0
    while True:
        if n % 5 == 0:
            cnt += n // 5
            print(cnt)
            break
        else:
            n = n - 2
            cnt += 1
            if n == 0:
                print(cnt)
                break

살짝 야매로 푼감이 없지 않아 있는 듯 하네요 ㅎㅎ

저는 1원인 경우와 3원인 경우를 빼주었지만 다른 분들이 어떻게 풀었는지 보니까 N에서 2를 계속 빼주다가 N이 음수가 되면 거스름돈을 못주니까 그때 -1을 출력하도록 코드를 짰더군요.

 

도움이 되었으면 좋겠습니다!!