1758 알바생 강호
업데이트:
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)을 빼기 때문에 팁을 최대값 순으로 정렬하는게 맞지 않나 싶다. 그래야 팁의 최대를 보존할 수 있기 때문.
나의 생각
문제가 어려운건 아니지만 내 논리가 맞는지 잘 모르겠네..? 이게 말로 표현하기가 조금 애매한 느낌..