티스토리 뷰
728x90
https://www.acmicpc.net/problem/1758
- 해설 :
줄을 서 있는 손님들이 입장하는 순서대로 강호에게 팁을 준다.
원래 주려고 했던 팁이 10원이고 3번째로 들어갔다면 10 - (3 - 1) = 8원의 팁을 주게 된다.
손님들이 주려는 팁의 정보가 주어질 때 어떻게 줄을 세워야 가장 팁을 많이 받을 수 있는지 찾는 문제이다.
- 풀이 :
그리디하게 풀 수 있는 문제이다. 돈을 많이 주는 사람의 순으로 정렬하고
받을 수 있는 팁이 1원 이상일 동안 계속 합해준다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import sys
input = sys.stdin.readline
if __name__ == "__main__":
N = int(input())
tip = sorted([int(input()) for _ in range(N)],reverse=True)
ans = 0
for idx,tips in enumerate(tip):
if tips - idx <= 0:
break
ans += tips - idx
print(ans)
|
cs |
320x100
'Algorithm > Greedy' 카테고리의 다른 글
(Python) - BOJ(1817번) : 짐 챙기는 숌 (0) | 2022.01.28 |
---|---|
(Python) - BOJ(1783번) : 병든 나이트 (0) | 2022.01.28 |
(Python) - BOJ(1744번) : 수 묶기 (0) | 2022.01.27 |
(Python) - BOJ(1700번) : 멀티탭 스케줄링 (0) | 2022.01.27 |
(Python) - BOJ(1541번) : 잃어버린 괄호 (0) | 2022.01.27 |
댓글
© 2022 WonSeok, All rights reserved