[SWEA] 1966. 숫자를 정렬하자 (D2, Java)

Jun·2026년 8월 10일

알고리즘

목록 보기
7/11

1. 문제 요약

N개의 숫자를 오름차순으로 정렬해 출력한다.

  • 5 ≤ N ≤ 50
  • 출력은 숫자를 공백으로 구분

2. 접근

N이 최대 50이라 어떤 정렬을 써도 통과한다. Arrays.sort() 한 줄이면 끝난다.

3. 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Solution {

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

        int T = Integer.parseInt(br.readLine().trim());

        for (int tc = 1; tc <= T; tc++) {
            int n = Integer.parseInt(br.readLine().trim());

            int[] nums = new int[n];
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int i = 0; i < n; i++) {
                nums[i] = Integer.parseInt(st.nextToken());
            }

            Arrays.sort(nums);

            sb.append('#').append(tc);
            for (int num : nums) {
                sb.append(' ').append(num);
            }
            sb.append('\n');
        }

        System.out.print(sb);
    }
}

시간복잡도: O(N log N) — 정렬이 지배한다. N ≤ 50이라 사실상 즉시 끝난다.
공간복잡도: O(N)

입력 파싱

split(" ") 대신 StringTokenizer를 썼다. split()은 정규식을 컴파일하고 String[] 배열을 새로 만들지만, StringTokenizer는 정규식 없이 토큰을 하나씩 꺼내 쓴다. 이 문제 크기에선 차이가 없지만, 입력이 큰 문제에서는 체감된다.

profile
꾸준하게

0개의 댓글