이숭간 공부기록
[백준] 1715번 파이썬 _ 카드 정렬하기 본문
728x90
https://www.acmicpc.net/problem/status/1715
문제유형 : 그리디, 우선순위큐
문제풀이 :
- 앞에서 더한카드의 숫자가 계속해서 누적되기 때문에 가장 작은 카드들부터 2개씩 뽑아서 더해줘야한다.
- 가장작은 카드를 반복적으로 뽑아내기때문에 힙큐모듈을 사용해서 우선순위큐를 사용한다.
- 주어진 예제케이스가 카드 3개인 테스트케이스여서 처음 생각에 실수가 있었다. 앞에서 더한 카드의 결과가 꼭 다음카드를 합칠때 사용되어야하는게 아니다. 20,20,20,10,10이 있을때 10,10,을 더하면 남은카드가 20,20,20,20이 되기때문에 20,20 을 더한후 40,20,20일때 아까 더한것은 두고 20,20을 또 더하고 남은 40,40을 더하는것이다.
정답코드 :
import sys
import heapq
input = sys.stdin.readline
number = []
n = int(input())
for _ in range(n):
number.append(int(input()))
number.sort()
q = []
for num in number:
q.append(num)
sum = 0
result = 0
while len(q)>1:
print(q)
sum = heapq.heappop(q) + heapq.heappop(q)
result += sum
q.append(sum)
print(result)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 14500번 파이썬 _ 테트로미노 (0) | 2021.08.12 |
---|---|
[백준] 11657번 파이썬 _ 타임머신 (0) | 2021.08.11 |
[백준] 1339번 파이썬 _ 단어 수학 (0) | 2021.07.25 |
[백준] 2262번 파이썬 _ 토너먼트 만들기 (0) | 2021.07.24 |
[백준] 1092번 파이썬 _ 배 (0) | 2021.07.22 |