조금씩 꾸준하게
[백준] 15720번 - 카우버거 (Python, 파이썬) 본문
반응형
문제
https://www.acmicpc.net/problem/15720
15720번: 카우버거
첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진
www.acmicpc.net
접근 방법
세트를 최대한 비싼 물품을 우선순위로 구현하면 되는 그리디 알고리즘 문제이다.
1. 각 버거/사이드/음료를 가격 순으로 정렬한다.
2. 버거/사이드/음료 개수 중 가장 작은 것만큼 세트로 구성할 수 있다. 예를 들어 버거가 3개, 사이드가 3개, 음료가 2개 있다면 총 2개의 세트를 만들 수 있다.
3. 비싼 것부터 세트로 구성하면 된다. 아래 코드에서는 세트를 N개 구성할 수 있다고 했을 때
(할인전가격) - (버거/사이드/음료 중 가장 비싼 N개의 가격 총합의 10%)를 계산하는 방식으로 진행하였다.
코드
import sys
B, C, D = map(int, sys.stdin.readline().rstrip().split())
# 비싼 것부터 정렬
arrB = sorted(list(map(int, sys.stdin.readline().rstrip().split())), reverse=True)
arrC = sorted(list(map(int, sys.stdin.readline().rstrip().split())), reverse=True)
arrD = sorted(list(map(int, sys.stdin.readline().rstrip().split())), reverse=True)
# 할인 전 가격
beforePrice = sum(arrB) + sum(arrC) + sum(arrD)
# 할인 후 가격
setCount = min(len(arrB), len(arrC), len(arrD)) # 버거/사이드/음료 중 가장 개수가 적은 것만큼 세트를 구성할 수 있다.
afterPrice = beforePrice - (sum(arrB[:setCount]) + sum(arrC[:setCount]) + sum(arrD[:setCount])) // 10 # 세트 구성시 10퍼센트 할인
print(beforePrice)
print(afterPrice)
풀이 정보
시도 횟수: 1회
총 문제 풀이에 걸린 시간: 6분 45초
반응형
'ProblemSolving > BOJ' 카테고리의 다른 글
[백준] 1476번 - 날짜 계산 (Python, 파이썬) (0) | 2023.04.01 |
---|---|
[백준] 21735번 - 눈덩이 굴리기 (Python, 파이썬) (0) | 2023.03.26 |
[백준] 5721번 - 사탕 줍기 대회 (Python, 파이썬) (0) | 2023.03.21 |
[백준] 4948번 - 베르트랑 공준 (Python) (0) | 2023.03.20 |
[백준] 9657번 - 돌 게임 3 (Python) (0) | 2023.03.15 |
Comments