[코드업] 최소대금 문제

jihan kong·2022년 3월 1일
0

코테 알고리즘

목록 보기
1/7
post-thumbnail

※ 본 문제는 코드업에서 발췌하였습니다.

문제설명

파파 파스타 가게는 점심 추천 파스타와 생과일 쥬스 세트 메뉴가 인기가 좋다.

이 세트 메뉴를 주문하면 그 날의 3 종류의 파스타와 2 종류의 생과일 쥬스에서 하나씩 선택한다.

파스타와 생과일 쥬스의 가격 합계에서 10%를 더한 금액이 대금된다.

어느 날의 파스타와 생과일 쥬스의 가격이 주어 졌을 때, 그 날 세트 메뉴의 대금의 최소값을 구하는 프로그램을 작성하라.

입력

입력은 5 행으로 이루어지며, 한 줄에 하나씩 양의 정수가 적혀있다.

1행의 정수는 첫 번째 파스타 가격이다.

2행의 정수는 두 번째 파스타 가격이다.

3행의 정수는 세 번째 파스타 가격이다.

4행의 정수는 첫 번째 생과일 쥬스 가격이다.

5행의 정수는 두 번째 생과일 쥬스의 가격이다.

(모든 파스타와 생과일 쥬스의 가격은 100 원이상 2000원 이하이다.)

출력

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



>> 나의 풀이

언어 : 파이썬

pasta_1 = float(input())
pasta_2 = float(input())
pasta_3 = float(input())
juice_1 = float(input())
juice_2 = float(input())
# pasta와 juice의 입력값을 float으로 형 변환후 입력값을 받도록 한다. 

pasta = [pasta_1, pasta_2, pasta_3]
# pasta list 변수를 생성하고 pasta_1, pasta_2, pasta_3의 값을 넣는다.

pasta.sort()
# 오름차순 정렬

juice = [juice_1, juice_2]
# juice도 pasta와 동일한 방식으로 진행

juice.sort()
# 오름차순 정렬

min_price = (pasta[0] + juice[0] + ((pasta[0] + juice[0]) * 0.1))
# 세트 메뉴의 대금의 최소값은 pasta와 juice 인덱스 0번째 값(최소값)을 각각 더한 값에 10%를 더한 값이 될 것이다.

print(min_price)
# 출력

후기

pasta와 juice의 값을 sorting하고 정렬된 리스트를 바탕으로 문제를 푸는 그리디 알고리즘의 대표적이면서 가장 기본적인 문제였다. 쉽지만 그리디의 핵심적인 작동원리이기 때문에 꼭 숙지하자.

여담으로...

알고리즘 공부를 시작했다. 많은 기업들이 점차 코딩테스트의 비중을 높이고 코테를 실시하고 있다. 사실 학부생 시절에도 라이브 코딩테스트를 실시할 때, 잘하는 편은 아니었다. 그리고 내머리로는 한계가 있음을 항상 느껴왔다. 그러나, 안경잡이 개발자로 유명하신 나동빈님께서 코딩테스트를 너무 어렵게 생각하지말고 핵심적인 알고리즘만 취해 공부하는 방법을 알려주셔서 다시 공부해보기로 했다. (현실적인 알고리즘 공부순서에 알고싶다면 나동빈님의 이 영상을 참고하면 좋을 것 같다. https://www.youtube.com/watch?v=ukkLCl9yBvEgreedy )

Greedy(탐욕) 알고리즘은 코딩테스트에서 비교적 쉽게 풀 수 있는 문제이다. 또한 탐색(BFS, DFS) 알고리즘, 동적프로그래밍과 더불어 코테에서 자주 출제되는 알고리즘으로 이들만 잘 공부해놓아도 코테에서 떨어질 일이 거의 없다고 봐도 해도 무방하다고 한다. 코드업과 백준을 통해 연습하고 또 연습해서 내것으로 만들자!

profile
학습하며 도전하는 것을 즐기는 개발자

0개의 댓글