반응형
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
#1 입력 예제
10 5 2 3 1 4 2 3 5 1 7
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
#1 출력 예제
1 1 2 2 3 3 4 5 5 7
작성한 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
// 입력 처리
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 변수 선언 및 초기화
int n = Integer.parseInt(br.readLine());
int[] numArray = new int[n];
// 배열에 값 추가 및 정렬
for (int i = 0; i < n; i++) {
numArray[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(numArray);
// 출력 처리
for (int num : numArray) {
sb.append(num).append("\n");
}
System.out.println(sb);
}
}
- System.out.println()을 10,000,000번 반복한다면 절대 못 푼다.
- 출력을 n번 반복하는 것보다 StringBuilder 인스턴스에 n번 추가해서 1번만 출력하는 것이 효율적이다.
마치며
처음엔 계수정렬로 문제를 풀어보려고 했는데 완전히 잘못된 접근이었다. 💢
'개발 > 코딩테스트' 카테고리의 다른 글
[LeetCode] 9. Palindrome Number #Easy #Java (1) | 2025.02.18 |
---|---|
[LeetCode] 1. Two Sum #Easy #Java (3) | 2025.02.17 |
[Baekjoon] 1439. 뒤집기 #S5 #Java (48) | 2024.11.25 |
[Baekjoon] 1038. 감소하는 수 #G5 #Java (51) | 2024.11.21 |
[Baekjoon] 1012. 유기농 배추 #S2 #Java (44) | 2024.11.19 |