본문 바로가기

코딩/백준

백준 1715 파이썬 우선순위 큐

반응형

백준 1715 - 카드 정렬하기

문제

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

 

1715번: 카드 정렬하기

정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장

www.acmicpc.net

1715

답안 코드 :

from queue import PriorityQueue

N = int(input())
pq = PriorityQueue()

for _ in range(N):
    card = int(input())
    pq.put(card)
data1 = 0
data2 = 0
sum = 0
while pq.qsize() > 1:
    data1 = pq.get()
    data2 = pq.get()
    temp = data1 + data2
    sum += temp
    pq.put(temp)
print(sum)

생각 :

# 문제 분석과 풀이
# 먼저 선택된 카드 묶음이 비교횟수에 영향을 준다.
# 카드 개수 작은거 먼저 합쳐야 한다.
# 두 개 합친 것을 새로운 카드 묶음으로 다시 데이터에 넣고 정렬

# 딱 생각해보니 데이터 삽입, 삭제, 정렬을 자주 해야함
# 우선순위 큐 이용

 

그리디 알고리즘 정리 블로그

https://mkisos.tistory.com/entry/%EA%B7%B8%EB%A6%AC%EB%94%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EA%B3%BC-%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84-%ED%81%90

 

그리디 알고리즘과 우선순위 큐

그리디 그리디 알고리즘은 현재 상태에서 볼 수 있는 선택지 중에 최선의 선택을 하는 알고리즘이다. 그리디 알고리즘은 동적 계획법보다 구현하기 쉽고 시간 복잡도가 우수하다. 하지만 항상

mkisos.tistory.com

 

반응형