반응형
250x250
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 |
Tags
- 파이썬
- BFS
- 백준 토마토 파이썬
- 그리디
- python
- 백준 그래프 탐색 파이썬
- it
- 프로그래밍
- 코딩
- dfs
- 백준 그래프 이론 파이썬
- 알고리즘
- 정보처리기사
- 자료구조
- BOJ
- 토마토
- 백준 백트랙킹
- 정보처리기사 실기
- 프로그래머스 파이썬
- 백준 백트랙킹 파이썬
- 코딩테스트
- 2022년 정보처리기사 실기
- 코드
- 자바
- 2022년 정보처리기사 실기 가답안
- 백준
- 2022년 정보처리기사 실기 1회 가답안
- 프로그래머스
- 정보처리기사 실기 시험
- 백준 N-Queens
Archives
- Today
- Total
코딩,안되면 될때까지
1715-카드 정렬하기 본문
728x90
반응형
<문제>
https://www.acmicpc.net/problem/1715
<풀이>
힙큐( heapq)를 사용하면 쉽게 풀수 있는 문제다.
비교횟수를 최소로 하기 위해선 가장 작은 크기의 카드 묶음부터 비교해 나가야 한다.힙큐를 사용하면 우선순위 큐 기능을 구현할 수 있기 때문에 손쉽게 작은 묶음부터 비교해 나갈수 있다.(※참고 : https://hae-sooo97.tistory.com/22?category=925334)
-파이썬-
#입력받은 카드 묶음을 순서대로 힙에 삽입
import sys
import heapq
n = int(input())
h = []
answer = 0
for _ in range(n):
heapq.heappush(h,int(sys.stdin.readline()))
if len(h) == 1:
print(0)
else:
while len(h)>1:
a = heapq.heappop(h)
b = heapq.heappop(h)
answer+=a+b
heapq.heappush(h,a+b)
print(answer)
반복횟수 | 1 | 2 |
a | 10 | 30 |
b | 20 | 40 |
answer | 30 | 100 |
h | [40,30] | [70] |
※주의 : while len(h)!=0으로 하면 안된다.(처음풀때 단순히 생각해 while문을 잘못 설정함)
while len(h)!=0과 같이 설정할경우 다음과 같은 일이 벌어진다.
반복횟수 | 1 | 2 | 3 |
a | 10 | 30 | 70 |
b | 20 | 40 | index error |
answer | 30 | 100 | |
h | [40,30] | [70] |
-자바-
package 백준_java;
import java.util.*;
public class Q_1715 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
PriorityQueue<Long> pq = new PriorityQueue<Long>();
for(int i = 0;i<n;i++){
pq.add(sc.nextLong());
}
long num = 0;
if(pq.size()==1) System.out.print(0);
else{
while (pq.size()>1){
long temp1 = pq.poll();
long temp2 = pq.poll();
num+= temp1+temp2;
pq.add(temp1+temp2);
}
System.out.print(num);
}
}
}
728x90
반응형
'백준 > 백준-파이썬' 카테고리의 다른 글
2178-미로탈출 (0) | 2022.03.05 |
---|---|
1260-DFS와 BFS (2) | 2022.03.03 |
14888-연산자 끼워넣기 (0) | 2022.02.26 |
18428-감시피하기 (0) | 2022.02.26 |
16234-인구이동 (0) | 2022.02.25 |
Comments