2751번: 수 정렬하기 2

Minseo Kang·2023년 2월 22일
0

백준

목록 보기
3/13


문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.


입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.


출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.




풀이
0. Scanner, StringBuilder 선언
1. 수의 개수 입력받기
2. ArrayList로 배열 생성
3. 수 입력받기
4. Collections를 이용해 정렬하기
5. StringBuilder에 문자열 저장
6. 결과 출력


import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

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

        Scanner scanner = new Scanner(System.in); // 0
        StringBuilder sb = new StringBuilder(); // 0

        int N = scanner.nextInt(); // 1

        ArrayList<Integer> arrayList = new ArrayList<>(); // 2

        for(int i = 0; i < N; i++) { // 3
            arrayList.add(scanner.nextInt());
        }

        Collections.sort(arrayList); // 4

        for(int x : arrayList) sb.append(x).append("\n"); // 5

        System.out.println(sb); // 6

    }
}



배운 것
1. 출력할 때 StringBuilder 객체를 이용하면 System.out.print()보다 성능이 좋음
2. 문자열 저장하고 마지막에 한 번에 System.out.print()로 출력
3. Collections로 정렬
4. Collections 클래스는 여러 유용한 알고리즘을 구현한 메소드들을 제공
5. 자주 사용되는 알고리즘으로는 정렬(Sorting), 섞기(Shuffling), 탐색(Searching) 등


// StringBuilder 사용
StringBuilder sb = new StringBuilder(); // 생성
sb.append("abcdefg"); // 문자열 붙이기
sb.delete(3, 7); // "defg" 삭제 -> "abc"
sb.replace(0, 3, "가나다"); // "가나다"
sb.reverse(); // "다나가"

// Collections 사용
Collections.sort(List<T> list);



문제링크
https://www.acmicpc.net/problem/2751

0개의 댓글