그리디 알고리즘

이동욱

2021/02/28

Categories: 알고리즘 Tags: 이것이 취업을 위한 코딩테스트다 코딩 테스트 알고리즘

그리디 알고리즘


현재 상황에서 좋아 보이는 것만을 선택하는 알고리즘

문제 1: 거스름돈


당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한이 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야할 돈 N은 항상 10의 배수이다.

def solve(money):
    ret = 0
    if money >= 500:
        ret += money // 500
        money %= 500

    if money >= 100:
        ret += money // 100
        money %= 100

    if money >= 50:
        ret += money // 50
        money %= 50

    if money >= 10:
        ret += money // 10
        money %= 10

    return ret
from problem import solve


def test_solve1():
    assertMoney(1300, 5)
    assertMoney(1260, 6)
    assertMoney(500, 1)
    assertMoney(260, 4)
    assertMoney(200, 2)
    assertMoney(150, 2)
    assertMoney(110, 2)
    assertMoney(100, 1)
    assertMoney(90, 4)
    assertMoney(80, 4)
    assertMoney(60, 2)
    assertMoney(50, 1)
    assertMoney(40, 4)
    assertMoney(10, 1)
    assertMoney(0, 0)


def assertMoney(money, count):
    assert (solve(money), count)

참고 문헌

이것이 취업을 위한 코딩테스트다, 나동빈, 한빛미디어

>> Home