본문 바로가기
  • Top Genius in the world
알고리듬

[알고리듬] #52 아이스크림

by Mr.Algo 2024. 4. 13.
728x90
반응형

파이썬 실습창을 열 수 있습니다.실습창 열기

하나씩 먹고 합시다.

 

 

1. 아이스크림

우리 동네 가게에서는 아이스크림 1개에 300원 합니다.

그런데 손잡이 3개를 모아 오면 아이스크림 1개를 줍니다.

4500원으로 몇 개의 아이스크림을 먹을 수 있을까요?

답은 22개입니다.

 

이 문제를 일반화시켜봅시다.

'우리 동네 가게에서는 아이스크림 1개에 (price) 원 한다.

그런데 손잡이 (stick) 개를 모아 오면 아이스크림 1개를 준다.

(money) 원으로 몇 개의 아이스크림을 먹을 수 있을까?

처음에 아이스크림을 사고 남은 돈은 없다.‘

 

이 문제를 해결하여 봅시다.

 

입력

한 줄에는 money, price, stick이 있으며

공백으로 나누어져 있습니다.

모두 정수입니다.

 

출력

먹을 수 있는 아이스크림 개수를 적습니다.

 

입력의 예1

4500 300 3

 

출력의 예1

22

 

입력의 예2

123000 500 10

 

출력의 예2

 273

 

2. 문제 분석

아이스크림 1개에 300원,  손잡이 3개를 모아 오면 아이스크림 1개를 줍니다.

4500원으로 몇 개의 아이스크림을 먹을 수 있을까요?

 

손으로(수작업으로) 계산하여 봅시다.

  • 4500원으로 300원하는 아이스크림을 산다.  아이스크림 15개, 손잡이 15개 생김
  • 15개의 손잡를 아이스크림으로 바꾼다.  아이스크림 5개, 손잡이 5개 생김
  • 5개의 손잡이를 아이스크림으로 바꾼다. 아이스크림 1개, 손잡이 2개 남고, 새로 1개 생김
  • 남은 손잡이 2개와 새로 생긴 손잡이 1개를 합하여  아이스크림으로 바꾼다. 아이스크림 1개, 손잡이 1개 남음
  • 남은 손잡이 1개는 아이스크림과 바꿀 수 없다. 
  • 전체 아이스크림 개수는 15+5+1+1=22. 그러므로 22개를 먹을 수 있다.

3. 문제해결 방법

순서도입니다.

이해가 될때까지 분석하세요.

 

4. 코딩하기

위의 순서도를 머리속으로 생각하며 코딩하여 보세요.

더보기
money,price,stick=map(int,input().split()) 
n=q=money//price           #가장 오른쪽의 값을 n과 q에 바인딩     
r=0
while q+r>=stick:
    q,r=divmod(q+r,stick)
    n+=q
print(n)

프로그램 구조를 정리하기가 쉽지않습니다.

수고하셨습니다.

안녕!

728x90
반응형