[백준] 1715번 카드 정렬하기 JAVA 풀이

권용환·2021년 9월 1일
0

백준

목록 보기
6/36
post-thumbnail

문제 바로가기

나의 풀이

n = 100,000 이고 모든 카드 묶음이 1,000일때 누적합은 int 값의 범위를 넘어설 수도 있을 것 같아서 PriorityQueue에 들어갈 데이터 type과 변수 ans를 각각 Long과 long 으로 선언해주었다.

문제를 다 풀고나서 실험해보니 1,668,928,000 으로 int 값의 범위인 –2,147,483,648 ~ 2,147,483,647 에 속하였다. 결과적으로는 헛수고였지만, 이런 것들까지 고려해서 코딩을 하는 것이 옳은것이 아닌가 생각한다.

이런 쉬운 문제일수록 간단한 실수로 인해 문제를 틀리는 것을 조심하자. while문 안에서 q.offer(ans); 를 해버리는 어이없는 실수를 한 덕에 10분 넘게 헤맸다.

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

class Main {

    static long ans = 0l;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        Queue<Long> q = new PriorityQueue<>();

        for (int i = 0; i < n; i++) {
            q.offer(Long.parseLong(br.readLine()));
        }

        while (q.size() > 1) {
            long x = q.poll();
            long y = q.poll();
            ans = ans + x + y;
            q.offer(x + y);
        }
        System.out.println(ans);
    }
}
profile
마구 낙서하는 블로그입니다

0개의 댓글