입력 n 의 최대가 1,000 이므로 n제곱 알고리즘 ( 버블 정렬 ) 으로 풀어도 되는 문제인 걸 인지하자.
( 1,000,000 < 1 억 )
for (int i = 0; i < input - 1; i++) {
for (int j = 0; j < input - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[i + 1];
arr[j + 1] = temp;
}
}
}
👾 반복문 구간 설정에 주의하자!!
i는 0 ... input-1 (마지막에 숫자 두 개가 한 번에 정렬 됨)
j는 0 ... input-1-i
직접 손으로 그려보는 게 가장 좋으므로 한 번 그려보자.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int input = Integer.parseInt(br.readLine());
int arr[] = new int[input];
for (int i = 0; i < input; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
for (int i = 0; i < input - 1; i++) {
for (int j = 0; j < input - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[i + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < input; i++) {
System.out.println(arr[i]);
}
}
}