CodingTest/Baekjoon

Baekjoon 14916 | 거스름돈 (Python)

tmdrn9 2025. 2. 19. 17:45

📌문제

SILVER5 / DP / 그리디 / 수학

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

 

📌문제 분석 및 설계

처음에는 생각없이 아 걍 5로나누고 2로 나누면 되는 문제네~ 하고 코딩했더니 바로 틀려서 엥? 했다가

아무래도 동전의 개수가 최소가 될려면 5가 많아야된다고 생각해서 거스름돈을 5로나는 몫을 구해 점점 줄여가는 식으로 계산했다.

 

1. 거스름돈을 5로 나눈 몫 구하기

2. 1번에서 구한 값에서 시작해서 줄여가며 즉, 5원 개수를 줄여가며 나머지를 2로 나눴을 때 0이 될때까지 반복

3. 0이 안되면 -1 출력 

 

문제를 푼 후 다른 사람들의 풀이를 보니 DP로도 풀던데... 난 아직 DP를 생각해내기 너무 어렵다.. ㅠ

 

📌소스 코드

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