Python3/백준 알고리즘

2022.03.14 [백준] (python 파이썬) 거스름돈

ian's coding 2022. 3. 14. 16:58
728x90
반응형

 

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

 

14916번: 거스름돈

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

www.acmicpc.net

 


풀이

다음 문제는 최소한의 동전의 갯수로 거스름돈을 줘야 하기 때문에 먼저 거스름돈 액수 n을 가장 큰 단위의 동전인 5로 나눈 몫을 cnt에 더해주고 n을 n%5(n을 5로 나눈 나머지)로 업데이트해준 뒤 3가지 조건을 정해주었다.

  1. n이 2로 나누어 떨어지지 않고 cnt가 0일 때
  2. n이 2로 나누어 떨어질때
  3. 위의 두조건을 모두 만족하지 않은 조건이 있을때(cnt가 0이면서 n이 2로 나누어 떨어지지 않을때)

1번의 조건은 cnt가 0보다 크기 때문에 cnt에서 1을 빼고 n에 5를 더해주면 n은 짝수가 되면서 나누어 떨어지게 된다.

2번 조건은 n이 2로 나누어 떨어지기 때문에 바로 계산해준다.

3번 조건은 5원과 2원으로 거슬러 줄 수 없기 때문에 cnt를 -1로 업데이트해준다.

1
2
3
4
5
6
7
8
9
10
11
n=int(input())
cnt=0
cnt+=n//5
n=n%5
if n%2!=0 and cnt>0:
    n+=5
    cnt-=1
    cnt+=n//2
elif n%2==0: cnt+=n//2
else: cnt=-1
print(cnt)
cs

 

 

 

 

728x90
반응형