작성
·
484
0
저의 풀이입니다
제가 채점 프로그램을 사용할 수 없는 환경이라서
다른 테스트를 못해보았습니다
sum에 하나씩 더해 갈때 cnt 를 증가시키고
만약 더한 뒤에 money 보다 크다면
증가했던 cnt 를 다시 back 시키기 위해 -1 했습니다
sum == money 경우
전역변수 flag 를 True 하여
나머지 재귀함수들을 바로 종료시키도록 하였습니다
질문1) 괜찮은 풀이인가요?
그리고
전에 배운 그리디 알고리즘으로도 풀 수 있는 거 같은데
질문2) 어떤 풀이가 더 효율적인 풀이인가요?
강의 잘보고 있습니다
항상 친절한 답변 주셔서 감사합니다
답변 1
0
안녕하세요^^
1) 네. 잘 하신 코드입니다.
2) 거스름 돈의 최소 동전 개수를 그리디로 풀려면 동전들이 서로 배수관계에 있어야만 가능합니다. 이 문제의 경우 그리디를 하면 안됩니다.
반례는 15원을 거슬러주는데 동전의 종류가 12, 5, 1이 있다면 그리디로는 12 : 1개, 1 : 3개로 총 4개이지만 15원은 5원 3개가 최소입니다.
문제를 잘 이해하지 못하고 있었네요
반례를 주시고 다시 풀어보니
제 풀이가 틀린 풀이였네요
다시 풀어보았습니다