반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

2012 등수매기기 본문

코딩 테스트(Python)/백준, 프로그래머스

2012 등수매기기

5_hyun 2022. 1. 19. 21:51
반응형

https://www.acmicpc.net/problem/2012

 

2012번: 등수 매기기

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다.

www.acmicpc.net

 

내 풀이(맞음)

import heapq

n = int(input())
ary = []
for i in range(n):
    x = int(input())
    ary.append(x)
count = 0
heapq.heapify(ary)
j = 1
for i in range(n):
    if(ary[0] == j):
        heapq.heappop(ary)
        j += 1
        continue
    else:
        count += abs(ary[0] - j)
        heapq.heappop(ary)
        j += 1
        
print(count)

리스트를 힙으로 전환하고 ary[0]으로 최소값을 항상 구한다. 만약 1 1 2 5 5가 입력되면 처음에 1이 나오고 제대로 자리에 있어서 괜찮다. 하지만 두번째 1은 2등 자리에 있어서 불만도가 1이 쌓인다. 이런식으로 문제를 풀었다. 힙을 쓰지 않았을땐 시간 초과가 나왔다. 그리고 PyPy3로 제출하니까 정답이었다.

반응형

'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글

1449 수리공 항승  (0) 2022.01.20
1946 신입사원  (0) 2022.01.20
15903 카드 합체 놀이  (0) 2022.01.18
2847 게임을 만든 동준이  (0) 2022.01.18
1715 카드정렬하기(heap 활용)  (0) 2022.01.18
Comments