k550706   1년 전

프로그래밍의 측면보다는 순수 수학에 대한 질문이라고 보이는데요


처음에는 입력된 값을 10으로 나누고,

나머지가 2와 5의 최소 공배수인 10 이하의 수에 대해서만 동전을 세는 로직을 짰었는데요.


하다보니 입력된 값을 20으로 나누고

2와 5의 최소공배수가 아닌 20 이하의 수에 대해서 동전을 세야 정답이 되더라구요.

아래 제 코드를 보시면

입력된 값보다 1만큼 큰 리스트를 만듭니다. 리스트는 -1로 채웁니다.

2의 배수는 2로 나눈값으로 바꾸고,

8로 뺀 수가 2의 배수인 경우, 2원짜리 동전 4개 + 나머지는 5원으로 처리

6로 뺀 수가 2의 배수인 경우, 2원짜리 동전 3개 + 나머지는 5원으로 처리

4로 뺀 수가 2의 배수인 경우, 2원짜리 동전 2개 + 나머지는 5원으로 처리

2로 뺀 수가 2의 배수인 경우, 2원짜리 동전 1개 + 나머지는 5원으로 처리

5의 배수는 5로 나눈값으로 바꿈


이렇게 하면, 2원짜리 동전 4개 + 5원짜리 동전 1개, 즉 10원이 넘어가는 숫자에 대해서도

동전을 세야 합니다.

제가 제대로 설명한건진 모르겠으나, 수학적으로 잘 이해가 안가서 문의드립니다.

댓글을 작성하려면 로그인해야 합니다.