인프런 커뮤니티 질문&답변

두용님의 프로필 이미지
두용

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

7. 동전 교환-Cut Edge Tech

다른풀이법 / 무엇이 더 효율적인지 ?

작성

·

484

0

A0267806-01BF-4A38-9707-B828F819E255.jpeg

저의 풀이입니다

 

제가 채점 프로그램을 사용할 수 없는 환경이라서

다른 테스트를 못해보았습니다

 

sum에 하나씩 더해 갈때 cnt 를 증가시키고

만약 더한 뒤에 money 보다 크다면

증가했던 cnt 를 다시 back 시키기 위해 -1 했습니다

sum == money 경우

전역변수 flag 를 True 하여

나머지 재귀함수들을 바로 종료시키도록 하였습니다

 

질문1) 괜찮은 풀이인가요?

 

 

그리고

6B7086EA-A4F5-4176-A0F2-1C4E8B217156.jpeg

전에 배운 그리디 알고리즘으로도 풀 수 있는 거 같은데

 

질문2) 어떤 풀이가 더 효율적인 풀이인가요?

 

 

강의 잘보고 있습니다

항상 친절한 답변 주셔서 감사합니다

 

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

1) 네. 잘 하신 코드입니다.

2) 거스름 돈의 최소 동전 개수를 그리디로 풀려면 동전들이 서로 배수관계에 있어야만 가능합니다. 이 문제의 경우 그리디를 하면 안됩니다.

반례는 15원을 거슬러주는데 동전의 종류가 12, 5, 1이 있다면 그리디로는 12 : 1개, 1 : 3개로 총 4개이지만 15원은 5원 3개가 최소입니다.

두용님의 프로필 이미지
두용
질문자

문제를 잘 이해하지 못하고 있었네요

반례를 주시고 다시 풀어보니

제 풀이가 틀린 풀이였네요

 

 

F62179EF-F6F8-40B7-A244-A4341BE710AE.jpeg

다시 풀어보았습니다

두용님의 프로필 이미지
두용

작성한 질문수

질문하기