-문제 : https://www.acmicpc.net/problem/2012
-정답 풀이 :
처음에는 일단 순서대로 다 나열하고, 중복되는 예상 순위는 빈 순위에 넣어야하나? 라고 생각했는데, 그렇게 하면 구현이 좀 어려워질 것 같아서
일단 오름차순으로 정렬한 뒤 각 인덱스와 값의 차의 절댓값을 더하니까 위에서 생각한 거랑 답이 같게 나왔다. 그래서 그렇게 구현하니까 정답이 떴던 문제다.
밑의 풀이로 python 돌려도 되고, sys 부분 없애고 pypy3으로 돌려도 된다. 하지만 sys 없이 python3으로 돌리면 시간초과 발생
import sys
input=sys.stdin.readline
n=int(input())
expected=[]
for _ in range(n):
expected.append(int(input()))
expected.sort()
expected=[0]+expected
answer=0
for i in range(1,n+1):
answer+=abs(i-expected[i])
print(answer)
'백준 > Greedy' 카테고리의 다른 글
[그리디/백준] 13904번 : 과제(다시) (0) | 2022.07.15 |
---|---|
[그리디/백준] 2828번: 사과 담기 게임 (0) | 2022.07.15 |
[그리디/백준] 1092번 : 배 (0) | 2022.07.14 |
[그리디/백준] 9576번: 책 나눠주기 (0) | 2022.07.14 |
[그리디/백준] 12904번: A와 B (0) | 2022.07.13 |