플랫폼 | 번호 | 제목 | 유형 | 난이도 | 언어 |
---|---|---|---|---|---|
백준 | 14916 | 거스름돈 | 그리디 | 실버5 | Swift, Python |
동전의 개수가 최소가 되도록 거슬러 주어야 하기 때문에 가능한 큰돈(5원)으로 많이 거슬러 줘야 한다. 즉, 그리디 알고리즘을 사용하면 된다.
입력된 금액(n)에서 5로 나누어떨어질 때까지 2를 빼면 된다. n에서 2를 계속 뺐는데도 불구하고 0이나 5의 배수가 되지 못했으면(n이 0보다 작아진 경우) 거슬러 줄 수 없는 것으로 -1일 출력하면 된다.
그전에 만약 n이 5의 배수라면 결과는 5로 나눈 값이다.
var n = Int(readLine()!)!
var result = 0
if n%5 == 0 {
result = n/5
} else {
while n > 0 {
n -= 2
result += 1
if n % 5 == 0 {
result += n/5
break
}
}
}
if n < 0 {
result = -1
}
print(result)
n = int(input())
result = 0
if n%5 == 0:
result = n//5
else:
while n > 0:
n -= 2
result += 1
if n%5 == 0:
result += n//5
break
if n < 0:
result = -1
print(result)