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
- BFS
- 우선순위큐
- 다이나믹 프로그래밍
- GROUP BY
- 트리
- 서브쿼리
- 구현
- 재귀
- 브루트포스
- 백트래킹
- 다이나믹프로그래밍
- 그리디
- 에라토스테네스의 체
- 다시
- 누적합
- 투포인터
- DFS
- 그래프 탐색
- 해시
- 크루스칼
- 시뮬레이션
- 그래프 이론
- 수학
- MST
- 플로이드-워셜
- join
- 분할정복
- 다익스트라
- 자료구조
- DP
Archives
- Today
- Total
기록하고 까먹지 말기
15903 본문
날짜 : 2022. 11. 11
사용 언어 : python
문제


코드
import sys
n, m = map(int, sys.stdin.readline().split()) # 카드 개수, 합체 횟수
a = list(map(int, sys.stdin.readline().split()))
a.sort()
for i in range(m):
t = a[0] + a[1]
a[0] = t
a[1] = t
a.sort()
s = 0
for i in range(n): s += a[i]
print(s)
풀이
- 먼저 카드를 입력받고 오름차순으로 정렬
- 이후에 가장 작은 두 수를 합한 후 그 수를 지정한 다음 또 정렬하는 방식을 m회 반복한다.
- 그 이후 합을 출력
알게된 점
- 시간복잡도가 걸려서 시간초과가 나올 줄 알았는데 의외로 한번에 풀려서 당황했다.
- 찾아보니 리스트의 sort() 시간복잡도는 O(N * logN)이었기 때문에 문제가 해결된 듯 하다.
참고 사이트
-