업데이트:

카테고리: ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

import sys
read = sys.stdin.readline

N = int(read())
tips = [0]
for i in range(1,N+1):
    tips.append(int(read()))

tips.sort(reverse=True)

result = 0
for n in range(N):
    temp_tip = tips[n] - ((n+1)-1)
    if temp_tip < 0 :
        temp_tip = 0
    result += temp_tip
print(result)




3. 풀이 및 생각


문제 풀이

이 문제의 핵심은 최대한 팁을 음수로 만들지 말자이다. 그래야 최대값이 나오기 때문이다. 간단하게 생각해보면 어차피 모든 팁에 (등수-1)을 빼기 때문에 팁을 최대값 순으로 정렬하는게 맞지 않나 싶다. 그래야 팁의 최대를 보존할 수 있기 때문.


나의 생각

문제가 어려운건 아니지만 내 논리가 맞는지 잘 모르겠네..? 이게 말로 표현하기가 조금 애매한 느낌..

최대 1 분 소요