알고리즘/문제풀이 - 백준
[백준 2750번] 수 정렬하기(JAVA)
DJDU
2022. 11. 18. 11:12
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
풀이(Solution)
1. 입력과 출력은 각각 BufferedReader와 BufferedWriter로 처리했다.(예외 처리, try-catch)
2. 입력 받은 수들을 int[] 배열에 저장했다.
3. 오름차순 정렬을 하기 위해 'Arrays.sort(배열)'메서드를 호출했다.
4. 'Arrays.sort(배열)'메서드를 호출하기 위해 java.util.Arrays를 import해야 한다.
시행착오(Trial&Error)
51837053 - 컴파일 에러
int arr = new int[N];
위와 같이 배열 타입을 잘못 작성했다. int arr가 아닌 int[] arr로 작성해야 했다.
51837073 - 틀렸습니다.
1
2
3
4
5
위와 같이 오름차순 순으로 수들을 정렬해야 한다.
한 수를 출력하고 개행문자('\n')를 통해 줄 건너뛰기를 해야 한다.
bw.write(arr + "\n");
하지만 위와 같이 출력 코드를 작성했으니
"배열이름@주소값" 형태로 출력됐을 것이기 때문에 '틀렸습니다' 판정을 받았다.
51837091 - 틀렸습니다.
bw.write(Arrays.toString(arr) + "\n");
이번엔 위와 같이 출력 코드를 작성했으니 '{1, 2, 3, 4,5}'와 같이 출력됐을 것이다. 따라서 '틀렸습니다' 판정을 받았다.
코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
for(int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr); // 배열 arr에 대해 오름차순 정렬
for(int i = 0; i < N; i++) {
bw.write(arr[i] + "\n");
}
br.close();
bw.close();
} catch(IOException e) {}
}
}