문제
1758번: 알바생 강호
첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같
www.acmicpc.net

코드
My answer
import sys
input = sys.stdin.readline
n=int(input())
tip=[]
for i in range(n):
tip.append(int(input()))
tip.sort(reverse=True)
answer=[i[1]-(i[0]) for i in enumerate(tip) if i[1]-i[0]>0]
print(sum(answer))
Another answer
n,*l=map(int,open(0))
print(sum(max(j-i,0)for i,j in enumerate(sorted(l,reverse=1))))
풀이
그리디의 전형적 문제로, 각 단계에서 얻을 수 있는 최대를 생각해야 한다.
따라서 단순하게 정렬하여 해결하면 된다.
숏코딩에서의 팁은 max(j-i,0)을 통해서 if문을 사용하지 않았다는 것이다.
728x90
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
| [Python] 백준 #20115 - 에너지 드링크 (0) | 2023.08.24 |
|---|---|
| [Python] 백준 #11508- 2+1 세일 (0) | 2023.08.23 |
| [Python] 백준 #2217- 로프 (0) | 2023.08.23 |
| [Python] 백준 #2828 - 사과 담기 게임 (0) | 2023.08.23 |
| [Python] 백준 #14916- 거스름돈 (0) | 2023.08.23 |