백준 - 10989번 - 수 정렬하기 3

이상훈·2023년 4월 13일
0

10989번

#1 Arrays.sort + StringBuilder

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
import java.io.IOException;

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

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int num = Integer.parseInt(bf.readLine());

		int[] arr = new int[num];
		for (int i = 0; i<num; i++) {
			arr[i] = Integer.parseInt(bf.readLine());
		}
		Arrays.sort(arr);

		for (int N : arr) {
			sb.append(N).append('\n');
		}
		System.out.println(sb);
	}
}

#2 Counting sort

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

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

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int num = Integer.parseInt(bf.readLine());

		int[] arr = new int[10001];
		for (int i = 0; i<num; i++) {
			arr[Integer.parseInt(bf.readLine())]++;
		}

		for (int i = 0; i<10001; i++) {
			while (arr[i] > 0) {
				sb.append(i).append('\n');
				arr[i]--;
			}
		}

		System.out.println(sb);
	}
}

풀이


Arrays.sort를 사용하면 최악의 경우 O(N제곱)만큼 시간복잡도가 나오기 때문에 아슬아슬하게 통과할것이다.

Counting sort는 입력받은 숫자를 인덱스로 받고 입력받은 숫자가 나올때마다 1씩 증가시켜 몇번째에 올지와 그 숫자가 얼마나 있는지 나타내준다.


위 = #2
아래 = #1

0개의 댓글