본문 바로가기
Algorithm & SQL/BAEKJOON

백준 JAVA 11286 절댓값 힙

by YoonJong 2022. 8. 2.
728x90

 

첫번째 풀이 Scanner , print 사용

package BAEKJOON.Silver.Ⅰ;

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

public class NO11296_2 {

    static int n;
    static PriorityQueue<Integer> Q = new PriorityQueue<>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            // 절대값 기준으로 앞 값이 더크다면 자리를 바꿔준다.
            if(Math.abs(o1) > Math.abs(o2)) {
                return 1;
                //절대값이 같으면 오름차순으로 정렬
            } else if (Math.abs(o1) == Math.abs(o2)) {
                return o1 - o2;
            } else {
                return -1;
            }
        }
    });

        public static void main(String[] args) {

            Scanner sc = new Scanner(System.in);
            n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                int num = sc.nextInt();

                if(num == 0) {
                    if(!Q.isEmpty()) {
                        System.out.println(Q.poll());
                    } else {
                        System.out.println(0);
                    }
                } else {
                    Q.offer(num);
                }
            }
    }
}

 

블로그 참고해서 BuffedReader , StringBuilder 사용 

package BAEKJOON.Silver.Ⅰ;

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

public class NO11296 {

    static int n;
    static PriorityQueue<Integer> Q = new PriorityQueue<>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            // 절대값 기준으로 앞 값이 더크다면 자리를 바꿔준다.
            if(Math.abs(o1) > Math.abs(o2)) {
                return 1;
                //절대값이 같으면 오름차순으로 정렬
            } else if (Math.abs(o1) == Math.abs(o2)) {
                return o1 - o2;
            } else {
                return -1;
            }
        }
    });

        public static void main(String[] args) throws IOException {
            StringBuilder sb = new StringBuilder();
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            n = Integer.parseInt(br.readLine());
            for (int i = 0; i < n; i++) {
                int num = Integer.parseInt(br.readLine());

                if(num == 0) {
                    if(!Q.isEmpty()) {
                        sb.append(Q.poll()).append("\n");
                    } else {
                        sb.append(0).append("\n");
                    }
                } else {
                    Q.offer(num);
                }
            }
            System.out.println(sb);
    }
}

 

시간활용도가 꽤 많이 차이가 난다.

먼저, 풀이가 완성되고 풀이가 맞다면, 시간을 더 줄일 수 있는 코드를 작성해보는 것이 필요하다.

728x90

'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글

백준 JAVA 14235 크리스마스 선물  (0) 2022.08.02
백준 JAVA 15903 카드 합체 놀이  (0) 2022.08.02
백준 JAVA 1715 카드 정렬하기  (0) 2022.08.01
백준 JAVA 2075 N번째 큰수  (0) 2022.08.01
백준 JAVA 7568 덩치  (0) 2022.07.30

댓글