본문 바로가기

알고리즘 공부/백준 > Python3

[백준 파이썬] #17450: 과자 사기

www.acmicpc.net/problem/17450

 

17450번: 과자 사기

입력은 총 3개의 줄로 이루어지며, 각 줄에는 S, N, U의 순서대로 한 봉지의 가격과 무게가 띄어쓰기를 사이에 두고 주어진다. 모든 입력값은 1 이상 1,000 이하의 정수이다. 세 종류의 과자의 가성

www.acmicpc.net

 

[문제]

남서네 집 앞 편의점에는 각각 S, N, U의 이름이 붙은 총 3가지의 과자를 판다. 

남서는 오늘 과자를 10봉지 사려고 한다. 편의점의 단골인 남서는 할인 쿠폰 하나를 가지고 있는데, 총 구매 금액이 5,000원 이상일 때 500원을 깎아 주는 쿠폰이다. 구매 금액이 5,000원 미만인 경우에는 할인 쿠폰을 쓸 수 없다. 또한 할인을 여러 번 적용할 수는 없다.

남서는 과자를 고를 때 가성비를 중요하게 생각한다. 남서가 생각하는 가성비란, 총 무게를 총 금액으로 나눈 값이다. 남서는 빨리 과자가 먹고 싶기 때문에, 한 종류의 과자만을 10봉지 골라 사 가려고 한다. 또, 다른 물건은 구매하지 않을 생각이다.

진열대를 들여다 보던 남서는 신기하게도 세 과자의 가성비가 모두 서로 다르다는 사실을 깨달았다. 남서는 어떤 과자를 사게 될까?

 

[문제 접근]

각 과자들의 가성비를 생각하여 리스트에 저장한다. 리스트의 max()함수와 일치하는 과자를 남서는 사게 될 것이다.

 

 

[정답]

 

1. 각 과자들의 가성비를 저장할 리스트 ans을 선언한다.

2. for문을 돌면서 리스트 snack에 가격과 무게를 저장한다.

3. 총 무게 weight와 price를 계산한다. 만약 price>5000 이라면 할인쿠폰 500원을 뺀다. 그리고 가성비를 계산하여 리스트 ans에 넣는다.

4. 만약 ans[0] 즉 첫 과자가 max(ans)와 같다면 'S'를 출력한다. 만약 ans[1] 즉 두 번째 과자가 max(ans)와 같다면 'N'을 출력한다. 만약 세 번째 과자가 max(ans)와 같다면 'U'를 출력한다.