-
[BOJ] 15903번 - 카드 합체 놀이Algorithm/BOJ 2022. 6. 10. 14:11
[BOJ] 15903번 - 카드 합체 놀이
https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
알고리즘
그리디로 생각하여 풀었다.
작게 만들기 위해서는 작은 두수를 뽑아내서 갱신시켜주어야 한다.
이때 시간 복잡도가 가장 낮은 Heap을 이용
1. heapq를 이용하여 Data 초기화
2. 요청받은 갯수만큼 heapq 갱신
3. 갯수 출력
코드
#BOJ 15903번 import heapq n , m = map(int,input().split()) datas = list(map(int,input().split())) q = [] [ heapq.heappush(q,data) for data in datas ] for _ in range(m) : temp = heapq.heappop(q)+heapq.heappop(q) heapq.heappush(q,temp) heapq.heappush(q,temp) print(sum(q))
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2170번 - 선 긋기 (0) 2022.06.11 [BOJ] 2143번 - 두 배열의 합 (0) 2022.06.10 [BOJ] 1520번 내리막 길 (0) 2022.06.10 [BOJ] 1253번 좋다 (0) 2022.06.08 [BOJ] 11000번 강의실 배정 (0) 2022.06.08