https://www.acmicpc.net/problem/16678
SOLUTION
단순히 총합 한 뒤, 1~N까지 더한 값을 빼준다고 생각한 것은 오산이었다. 같은 수가 있을 경우가 있기 때문.
예를 들어 1 1 1 2 2 조합이라면 해커를 고용하지 않아도 답이 해결된다.
따라서 먼저 명예도를 오름차순으로 정렬해준 뒤
1부터 max_honor을 높여가며 몇 번의 action을 취해야 하는지 보았다.
PYTHON CODE
N = int(input())
honors = []
for _ in range(N):
honors.append(int(input()))
max_honor = 1
action = 0
for num in sorted(honors): #정렬 먼저
if num >= max_honor:
action += num - max_honor
max_honor += 1
print(action)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#281 백준 파이썬 [16680] 안수빈수 (0) | 2019.12.13 |
---|---|
#280 백준 파이썬 [10799] 쇠막대기 - 스택 (0) | 2019.12.12 |
#278 백준 파이썬 [16677] 악마 게임 (0) | 2019.12.12 |
#277 백준 파이썬 [16676] 근우의 다이어리 꾸미기 (0) | 2019.12.11 |
#276 백준 파이썬 [16675] 두 개의 손 (0) | 2019.12.11 |