반응형

도전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개를 중첩시킨건데 하나하나 살펴보시면 크게 어려운 것 없으실 것입니다. 

출력결과입니다. 

이상입니다 ^^ 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기