반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴
조금씩 꾸준하게
[백준] 15720번 - 카우버거 (Python, 파이썬) 본문
ProblemSolving/BOJ

[백준] 15720번 - 카우버거 (Python, 파이썬)

적절 2023. 3. 23.
반응형

문제

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초

 

반응형
Comments