728x90
https://www.acmicpc.net/problem/14698
14698번: 전생했더니 슬라임 연구자였던 건에 대하여 (Hard)
각 테스트 케이스마다 슬라임을 끝까지 합성했을 때 청구될 비용의 최솟값을 1, 000, 000, 007로 나눈 나머지를 출력한다. 전기 에너지가 전혀 필요하지 않은 경우엔 1 을 출력한다.
www.acmicpc.net
💡 문제 풀이
그리디 알고리즘 문제이다.
간단하게 작은 것부터 계산해주면 된다.
매번 정렬하면서 사용할 수 없으니까 우선순위 큐를 사용해주면 된다.
✔️ 느낀 점
heapq.heappop이 힙 구조로 되어있다는 가정 하에 0번 인덱스를 리턴하는 것인 것을 몰라서 heapify를 안 써서 계속 틀렸다. 이번 기회에 확실하게 잡고 가게 되었다.
💻 코드
import sys, heapq
input = sys.stdin.readline
MOD = 1000000007
for _ in range(int(input())):
N = int(input())
energy = list(map(int, input().split()))
heapq.heapify(energy)
cost = 1
while len(energy) > 1:
tmp = heapq.heappop(energy) * heapq.heappop(energy)
cost *= tmp
heapq.heappush(energy, tmp)
print(cost % MOD)
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[Python] 백준 12904번 : A와 B (0) | 2022.08.26 |
---|---|
[Python] 백준 2931번 : 가스관 (0) | 2022.08.25 |
[Python] 백준 1647번 : 도시 분할 계획 (0) | 2022.08.21 |
[Python] 백준 6497번 : 전력난 (0) | 2022.08.21 |
[Python] 백준 1613번 : 역사 (0) | 2022.08.17 |
댓글