티스토리 뷰

그리디 알고리즘이란?

현재 상황에서 지금 당장 좋은 것만 고르는 방법이다. 따라서 최적의 해를 보장할 수 없을 때가 많다.

하지만 코딩테스트에서는 그리디로 얻은 해가 최적의 해가 되는 상황을 추론할 수 있어야 풀리도록 출제된다.

 

해결 아이디어

1. 최적의 해를 구하기 위해 가장 큰 단위부터 거슬러 준다.

2. 그 이유는 무엇일까? 큰 단위가 항상 작은 단위의 배수이기 때문이다. 

3. 800원을 거슬러주어야 할 때 화폐 단위가 500, 400, 100이라면 500은 400의 배수가 아니기 때문에 최적의 해를 구할 수 없다.

 

예제 3-1. 거스름 돈

# 나의 풀이
money = int(input())  # 거스름돈 1260
count = 0
if money//500 > 0:
    count += (money//500)
    money -= 500*(money//500)
    # money를 나누고, 남은 나머지를 money에 다시 넣어준다.
    # money %= 500를 하면 260이 남음
if money//100 > 0:
    count += (money//100)
    money -= 100*(money//100)
if money//50 > 0:
    count += (money//50)
    money -= 50*(money//50)
if money//10 > 0:
    count += (money//10)
    money -= 10*(money//10)
print(count)

# 해설
money = 1260
coin = [500, 100, 50, 10]
count = 0
for i in coin:
    count += money//i
    money %= i
print(count)

 

'Python > 이코테' 카테고리의 다른 글

11-2. 곱하기 혹은 더하기  (0) 2022.05.26
11-1. 모험가 길드  (0) 2022.05.26
3-4. 1이 될 때까지  (0) 2022.05.25
3-3. 숫자 카드 게임  (0) 2022.05.25
3-2. 큰 수의 법칙  (0) 2022.05.24
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday