Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- free-space manage
- RTMP
- MQTT
- segmentation
- videostreaming
- CPU virtualization
- 은닉마르코프모델
- 2025년시작
- rtmpserver
- goroutine
- InfluxDB
- TLS
- reverse proxy
- Address translation
- docker
- Docker Compose
- webserver
- Process
- docker container
- 페이징
- memory virtualization
- hmm
- paging
- was
- ADsP요약
- ADsP
Archives
- Today
- Total
Euclidean space
[백준] 1715 카드 정렬하기 | Priority Queue 본문
문제 보자마자 짠 코드
N = int(input())
cards = [int(input()) for _ in range(N)]
cards.sort()
s = 0
for i in range(1, N):
s += (cards[i-1] + cards[i])
cards[i] = (cards[i-1] + cards[i])
print(s)
= 메모리 초과
뿐만 아니라 코드 내용도 잘못된 부분이 있었다..
일단 나는 그냥 정렬하고, 누적하며 더해줌
매번 계산 시점에서 가장 작은 두 값을 선택해서 더하는 것이 핵심인데
예를 들어 카드 1, 1, 10, 10, 10의 경우
따라서 Priority Queue를 사용하여, 항상 가장 작은 두 묶음을 합쳐야 한다.
(이걸 왜 미리 고려하질 못할까...?_?)
import heapq
N = int(input())
cards = [int(input()) for _ in range(N)]
heapq.heapify(cards)
s = 0
while len(cards) > 1:
temp = heapq.heappop(cards) + heapq.heappop(cards)
s += temp
heapq.heappush(cards, temp)
print(s)
완성
앞으로 이런 문제 절대 안틀려야지
'기본 > 알고리즘' 카테고리의 다른 글
DP: knapsack problem (1) (1) | 2024.10.13 |
---|---|
stack (1) (2) | 2024.09.19 |
[백준] 17484 진우의 달 여행 (Small) | python (0) | 2024.07.16 |