일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- Promise
- 투포인터
- useAppDispatch
- 인증/인가
- ESlint
- 결정 알고리즘
- CI/CD
- 태그된 유니온
- webpack
- 타입 좁히기
- recoil
- autosize
- 호이스팅
- 리터럴 타입
- app router
- map
- async/await
- 무한 스크롤
- 공변성
- CORS
- 인터섹션
- MSA
- TS
- dfs
- tailwind
- React
- Jest
- 반공변성
- RTK Query
- SSR
Archives
- Today
- Total
짧은코딩
2012 등수매기기 본문
반응형
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