문제
코드
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 |