[BOJ] 백준 2751번 : 수 정렬하기 2 - Java

2024. 12. 20. 16:29·Algorithm Solving/Java

https://www.acmicpc.net/problem/2751

 

  • PriorityQueue를 이용한 정렬
import java.io.*;
import java.util.*;

public class Main {
        public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine()); // 수의 개수
        
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        // 수의 개수만큼 반복문을 돌며 정렬할 숫자 저장
        for (int i=0; i<N; i++) {
            pq.add(Integer.parseInt(br.readLine()));
        } 

        // PriorityQueue : 우선순위 큐
        // 우선순위가 높은 데이터가 먼저 나가는(poll()) 자료 구조
        // 최소 힙을 사용하게 하여 오름차순으로 출력.

        // 출력
        for (int i=0; i<N; i++) {
            bw.write(pq.poll()+"\n");
        }
        bw.close();
    }
}

  • 시간 초과
  • ArrayList를 이용한 sort() 함수 사용
    • ArrayLis의 sort()는 dual-pivot Quicksort 알고리즘
    • 해당 알고리즘은 평균 시간복잡도 O(nlogn)이고, 최악의 경우 O(n^2)
    • 문제 조건이 1 ≤ N ≤ 1,000,000 이기 때문에, O(n^2)인 경우 2초를 초과하게 된다.
    • 시간 복잡도 참고
import java.io.*;
import java.util.*;

public class Main {
        public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine()); // 수의 개수
        
        List<Integer> list = new ArrayList<>(); // 정렬할 수들을 저장하기 위해 리스트 선언
        // 수의 개수만큼 반복문을 돌며 리스트에 숫자 저장
        for (int i=0; i<N; i++) {
            list.add(Integer.parseInt(br.readLine()));
        } 

        // ArrayList 오름차순 정렬
        list.sort(Comparator.naturalOrder());

        // 정렬된 list 출력
        for (int i=0; i<N; i++) {
            System.out.println(list.get(i));
        }
    }
}

 

 

저작자표시 비영리 변경금지

'Algorithm Solving > Java' 카테고리의 다른 글

[BOJ] 백준 10828번 : 스택 - Java  (0) 2024.12.26
[BOJ] 백준 1929번 : 소수 구하기 - Java  (0) 2024.12.23
[BOJ] 백준 1260번 : DFS와 BFS - Java  (0) 2024.12.19
[BOJ] 백준 2839번 : 설탕 배달 - Java  (0) 2024.12.19
[BOJ] 백준 1463번 : 1로 만들기 - Java  (0) 2024.12.18
'Algorithm Solving/Java' 카테고리의 다른 글
  • [BOJ] 백준 10828번 : 스택 - Java
  • [BOJ] 백준 1929번 : 소수 구하기 - Java
  • [BOJ] 백준 1260번 : DFS와 BFS - Java
  • [BOJ] 백준 2839번 : 설탕 배달 - Java
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (135)
      • TIL (Today I Learned) (26)
      • Dev Projects (9)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Java Study (24)
        • Basics (3)
        • Advanced (3)
        • Frameworks (17)
        • Etc (1)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    백트래킹
    javascript
    완전탐색
    greedy
    백준
    join
    BOJ
    jwt
    mysql
    programmers
    DFS
    sql
    bootstrap
    GROUP BY
    jQuery
    프로그래머스
    시뮬레이션
    BFS
    자료구조
    dp
    Subquery
    CSS
    다이나믹프로그래밍
    Google Fonts
    Firebase
    stack
    그리디
    jpa
    HTML
    java
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[BOJ] 백준 2751번 : 수 정렬하기 2 - Java
상단으로

티스토리툴바