티스토리 뷰

 

1758번: 알바생 강호

첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같

www.acmicpc.net


1. 문제 내용

 

 

2. 접근 방식

  • 많은 팁을 주려는 손님을 먼저 받자

많은 팁을 주려는 손님의 등수를 높임으로써 팁에서 마이너스 되는 값을 줄이면 팁의 최대값을 구할 수 있다. 따라서 입력 받은 팁을 내림차순 정렬한 후, 순서대로 손님을 받으면 된다.

 

 

3. 정답 코드

import sys

input = sys.stdin.readline

n = int(input())
data = [int(input()) for _ in range(n)]

data.sort(reverse=True)

result = 0
rank = 1
for tip in data:
    temp = tip - (rank - 1)

    if temp < 0:
        break

    result += temp
    rank += 1

print(result)
728x90