티스토리 뷰
11508번: 2+1 세일
KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두
www.acmicpc.net
1. 문제 내용
2. 접근 방식
- 최대한 높은 가격을 무료로 지불하자.
세 개로 모은 가격 중에서 가장 적은 가격이, 나머지 제품들보다 비싸면 이득이다. 즉, 입력 받은 제품의 가격을 내림차순 정렬한 후에 3개씩 짝 지으면 된다. 예를 들어 10, 9, 6, 4, 3, 2가 있을 때 (10, 9, 6)과 (4, 3, 2)로 그룹을 나누면, 첫 번째 그룹에서 가장 작은 가격인 6이 두 번째 그룹에 속한 제품의 가격들보다 비싸므로, 구매 비용이 절약된다.
3. 정답 코드
- sys.stdin.readline( ): input( )과 동일한 역할이지만, 속도가 훨씬 빠르다.
똑같은 코드이지만 input( )으론 3688ms가 소요되고, sys.stdin.readline( )으론 92ms밖에 안 걸린다.
import sys
input = sys.stdin.readline
n = int(input())
data = [int(input()) for _ in range(n)]
data.sort(reverse=True)
result = 0
for i in range(0, n-2, 3):
result += data[i] + data[i+1]
for j in range(i+3, n):
result += data[j]
print(result)
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 19939번 박 터뜨리기 파이썬 정답 코드 (0) | 2023.06.05 |
---|---|
[백준] 1758번 알바생 강호 파이썬 정답 코드 (0) | 2023.06.05 |
[백준] 1049번 기타줄 파이썬 정답 코드 (0) | 2023.06.04 |
[백준] 1969번 DNA 파이썬 정답 코드 (0) | 2023.06.04 |
[백준] 2847번 게임을 만든 동준이 파이썬 정답 코드 (0) | 2023.06.04 |