도전4. 현재 나의 주머니에는 5천원이 있다. 비디오 한편을 빌리면 3,500원이 남는다. 슈퍼에 들려서 크림빵(500원), 새우깡(700원), 콜라(400원)를 사려고 한다. 잔돈을 하나도 남기지 않고 이 세가지 물건을 구입한다면 각각 몇개 씩 사야 하는가? 물론 여러가지 경우의 수가 있을 것이다. 필자가 어떠한 선택을 할 수 있는지 여러분이 제시해 주기 바란다. 단 모든 품목을 한가지 이상은 구입할 예정이다.
자.. 알고리즘에 대해서 생각을 해보는겁니다.
수중에 3500원이 있으면, 크림빵만 사면 최대 7개, 새우깡만 사면 최대 5개, 콜라만 사면 최대 8개 까지
살 수 있습니다.
그렇다면, for문을 활용해서, 크림빵을 1~7개, 새우깡 1~5개, 콜라 1~8개 총 280가지 경우 중 가격의 합
이 3,500원이 되는 경우를 찾으면 되는 것입니다.(7 * 5 * 8 해서 280)
의사코드
max크림 = 3500 / 500
max새우 = 3500 / 700
max콜라 = 3500 / 400
for(i가 1부터 max 크림까지)
for(j가 1부터 max 새우까지)
for(k가 1부터 max 콜라까지)
산 금액 = i * 500 + j * 700 + k * 400
if(산 금액 == 소유하고 있는 금액)
크림빵 i 개, 새우깡 j 개, 콜라 k 개
뭐 이정도 입니다. 생각보다 그렇게 어렵지는 않습니다.
굳이 물건들의 최대변수를 추가하는 이유는 뭔가 하면
여기서는 금애깅 3500원으로 고정되어 있지만, 나중에 금액을 입력받는 기능을 추가할때 편하라고..^ㅡ^
코드입니다.
의사코드에 있는걸 그대로 옮긴것 입니다.
반복문 3개를 중첩시킨건데 하나하나 살펴보시면 크게 어려운 것 없으실 것입니다.
출력결과입니다.
이상입니다 ^^
'IT 개발 > C' 카테고리의 다른 글
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 ONE. 도전6 (0) | 2020.12.30 |
---|---|
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 ONE. 도전5 (0) | 2020.12.30 |
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 ONE. 도전3 (0) | 2020.12.30 |
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 ONE. 도전2 (0) | 2020.12.30 |
[C언어] 열혈강의 C프로그래밍(윤성우 저) 도전! 프로그래밍 ONE. 도전7 (0) | 2020.12.30 |
최근댓글