CodeUp 2001 : 최소 대금

hjchoi·2022년 4월 17일
0

coding-test

목록 보기
5/5

문제설명

파파 파스타 가게는 점심 추천 파스타와 생과일 쥬스 세트 메뉴가 인기가 좋다.
이 세트 메뉴를 주문하면 그 날의 3 종류의 파스타와 2 종류의 생과일 쥬스에서 하나씩 선택한다.
파스타와 생과일 쥬스의 가격 합계에서 10%를 더한 금액이 대금된다.
어느 날의 파스타와 생과일 쥬스의 가격이 주어 졌을 때, 그 날 세트 메뉴의 대금의 최소값을 구하는 프로그램을 작성하라.

입력

입력은 5 행으로 이루어지며, 한 줄에 하나씩 양의 정수가 적혀있다.
1행의 정수는 첫 번째 파스타 가격이다.
2행의 정수는 두 번째 파스타 가격이다.
3행의 정수는 세 번째 파스타 가격이다.
4행의 정수는 첫 번째 생과일 쥬스 가격이다.
5행의 정수는 두 번째 생과일 쥬스의 가격이다.
(모든 파스타와 생과일 쥬스의 가격은 100 원이상 2000원 이하이다.)

출력

그날 세트 메뉴의 최소 대금을 소수 첫째자리까지 출력하시오.

입력예시

800
700
900
198
330

출력 예시

987.8

코드

p1 = float(input())
p2 = float(input())
p3 = float(input())
j1 = float(input())
j2 = float(input())

#가장 작은 파스타 가격 비교
temp1 = p2 if p1 > p2 else p1
minp = p3 if temp1 > p3 else temp1

#가장 작은 쥬스 가격 비교
minj = j2 if j1 > j2 else j1

resultP = minp+(minp*0.1)
resultJ = minj+(minj*0.1)

print(format(resultP+resultJ,".1f"))

설명 및 후기

각 행에 순서대로 파스타 1, 2, 3 쥬스 1, 2의 가겨이 들어오므로 각 변수에 가격을 담을 수 있도록 변수에 추가해주었다.
그 후, 파스타중 가장 작은 가격과 쥬스중 가장 작은 가격을 비교하여 각 minp, minj 변수에 담아주고
거기에 10%의 대금을 더한 가격을 구해 출력해 주도록 하였다.

위 문제는 Greedy(탐욕법) 알고리즘 개념에 대해 공부하고 나서 가장 먼저 풀어본 문제였다. 문제 자체는 간단했는데, 문제를 풀면서도 이게 내가 탐욕법을 써서 코딩을 하는지 긴가민가한 느낌이 들었다... 탐욕법 개념에 대해 좀 더 정리해야겠다는 생각이 든다.

다른 문제풀이

p1 = float(input())
p2 = float(input())
p3 = float(input())
j1 = float(input())
j2 = float(input())

#파스타와 쥬스 가격을 배열에 추가
pList = [p1, p2, p3]
jList = [j1, j2]

#오름차순 정렬
pList.sort()
jList.sort()

resultP = pList[0]+(pList[0]*0.1)
resultJ = jList[0]+(jList[0]*0.1)

print(format(resultP+resultJ,".1f"))

# sort()를 통해서 좀더 코드도 깔끔해지고, 단순하게 가장 적은 수를 찾아 금액을 구할 수 있었다.
profile
개발 잘하고 싶다...!

0개의 댓글