Skip to content

21.02.21 [백준] 15903 카드 합체 놀이 #148

@blossun

Description

@blossun

아이디어

  • 제일 작은 값을 찾아내야하므로 작은 값이 높은 우선순위를 갖도록 저장할 때 정렬되는 우선순위 큐를 활용하자
  • 배열을 매번 정렬하는 불필요한 작업이 필요없다. ⇒ 속도가 두배이상 빠름

어려운점 & 실수

  • 자료형 범위 확인!!!!!! 또.....또... int 말고 long을 쓰자..... !!!
  • m == 0 일 때, 고려하지 못한 코드 (실수)
// 틀린 코드
  while (m-- > 0) { }
// 수정 코드
 while (--m >= 0) { }

정답

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class N15903 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        PriorityQueue<Long> queue = new PriorityQueue<>();

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            queue.add(Long.parseLong(st.nextToken()));
        }

        while (--m >= 0) {
            // 2 <= n <= 1,000
            long x = queue.remove();
            long y = queue.remove();
            queue.add(x + y);
            queue.add(x + y);
        }
        System.out.println(queue.stream().reduce(0L, (a, b) -> a + b));
    }
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions