[백준/파이썬] 17450번 풀이

업데이트:



문제 정보


풀이

문제

남서네 집 앞 편의점에는 각각 S, N, U의 이름이 붙은 총 3가지의 과자를 판다. 진열대에는 한 봉지당 가격과 무게가 안내되어 있다. 같은 종류의 과자끼리는 봉지의 무게가 똑같다.

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

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

입력 요약
입력은 총 3개의 줄로 이루어지며, 각 줄에는 S, N, U의 순서대로 한 봉지의 가격과 무게가 띄어쓰기를 사이에 두고 주어진다.

모든 입력값은 1 이상 1,000 이하의 정수이다.

세 종류의 과자의 가성비가 서로 다름이 보장된다.

출력 요약
첫 번째 줄에 가장 가성비가 높은 과자의 이름(S 또는 N 또는 U)을 출력한다.

코드

l=[list(map(int,input().split()))for _ in range(3)]
l=list(map(lambda x:[x[1]*10/(x[0]*10-(500 if x[0]*10>=5000 else 0))],l))
l[0].append('S');l[1].append('N');l[2].append('U');
l.sort()
print(l[2][1])

설명

핵심은 구현 관점에서 남서네 집 앞 편의점에는 각각 S, N, U의 이름이 붙은 총 3가지의 과자를 판다. 진열대에는 한 봉지당 가격과 무게가 안내되어 있다. 같은 종류의 과자끼리는 봉지의 무게가 똑같다.

남서는 오늘 과자를 10봉지 사려고 한다. …를 만족하도록 로직을 구성하는 것입니다.

코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.

경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.



댓글남기기