자연수 n이 주어졌을 때
n = a*3 + b*5
로 나타낼 수 있으면
a+b의 최솟값을 출력하는 문제입니다.
그럼 a+b의 최솟값은 어떻게 구할 수 있을까요?
n = 30 일 때를 생각해봅시다.
이 때 가능한 a,b 쌍은 3개가 있습니다.
a=10, b=0 ==> a+b=10
a=5, b=3 ==> a+b=8
a=0, b=6 ==> a+b=6
눈치채셨나요?
a가 작을수록 a+b의 값이 작아집니다.
어찌보면 당연한 얘기죠. 3kg 봉지를 적게 써야 5kg 봉지를 많이 쓸태니까요.
자연수 n이 32입니다. a+b의 최솟값은 어떻게 구하면 될까요?
a,b 쌍이 여러 개 나올탠데
그 중 a가 가장 작은 방법을 찾으면 되겠죠?
a=4, b=4, a+b=8
이 방법이 최소가 되겠네요.
이걸 일반화하시면 말도 안되게 쉬운 알고리즘이 나옵니다.
bbagwang 6년 전
한동안 쉬다가 오랜만에 와서 다시 해보려는데
이전에 어떤분이 답글 달아주신걸 최근에 보고 깨달음을 얻어
다시 코드를 짜보았습니다만 제 기준에선 예외사항이 없이 잘 작동 하는 것 같으나
체점에서 틀렸다고 나옵니다 ㅠㅠ
한번 둘러봐 주시면 감사하겠습니다.