우선순위 큐를 사용하여 문제를 풀었습니다.
우선순위큐만 이야기하면 따로 설명은 없어도 될거같습니다.
반복횟수만큼 큐에서 두개를 빼고 더한값을 큐에 두번 넣어주면 되니깐용
아 그리고 int를 하면 범위가 넘어갈거같아 long으로 했습니다
public class Q15903{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int cardCnt = Integer.parseInt(st.nextToken());
int loopCnt = Integer.parseInt(st.nextToken());
PriorityQueue<Long> pq = new PriorityQueue<Long>();
st = new StringTokenizer(br.readLine());
for(int i=0; i<cardCnt; i++) {
pq.add(Long.parseLong(st.nextToken()));
}
while(loopCnt > 0) {
long temp = pq.poll();
temp += pq.poll();
pq.add(temp);
pq.add(temp);
loopCnt--;
}
long sum = 0;
while(!pq.isEmpty()) {
sum += pq.poll();
}
System.out.print(sum);
}
}
'짱구 굴리기 (Q) - ' 카테고리의 다른 글
[백준 7576] 토마토 (0) | 2019.04.09 |
---|---|
[백준 2178] 미로탐색 (0) | 2019.04.08 |
[백준 1924] 2007년 (0) | 2019.04.07 |
[백준 2839] 설탕 배달 (0) | 2019.04.07 |
[백준 2193] 이친수 (0) | 2019.04.05 |