N개의 숫자를 오름차순으로 정렬해 출력한다.
N이 최대 50이라 어떤 정렬을 써도 통과한다. Arrays.sort() 한 줄이면 끝난다.
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는 정규식 없이 토큰을 하나씩 꺼내 쓴다. 이 문제 크기에선 차이가 없지만, 입력이 큰 문제에서는 체감된다.