문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 1
5
5
2
3
4
1
예제 출력 1
1
2
3
4
5
기존에 몇 번 풀어보았던 형식의 정렬이다
제한시간은 1초, 수의 범위는 1<=N<=1000이다
따라서 반복문을 통해 전체 검색을 해도 시간초과가 뜨지 않을 것이라 생각하고
반복문을 통한 정렬을 수행했다
문제는 오름차순으로 정리해야 한다
코드는 다음과 같다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _2750_수_정렬하기 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(bf.readLine());
int temp = 0;
int[] arr = new int[T];
for (int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken());
arr[i] = a;
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
수의 범위가 작기 때문에 순차적으로 검색해서 정렬이 가능했다
다른 정렬 방법을 더 고려해봐야 할 것 같다
Arrays.sort(arr)
한 문장만 추가하면 알아서 정렬해준다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class _2750_수_정렬하기 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(bf.readLine());
int temp = 0;
int[] arr = new int[T];
for (int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken());
arr[i] = a;
}
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
배열 안쓰고 풀어주세요 ㅠㅠ