문제 해석
- 첫번 째 줄에는 수의 개수인 N을 입력받고, 두번째 줄부터는 N개의 개수만큼 숫자를 입력 받는다.
- 그 입력받은 숫자를 작은수 -> 큰수로 정렬하여 출력한다.
- 단, 중복된 숫자는 없다.
코드1
import java.io.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] numnbers = new int[N];
for(int i = 0; i < N; i++){
numnbers[i] = Integer.parseInt(br.readLine());
}
br.close();
int[] sortedNumber = Arrays.stream(numnbers).sorted().toArray();
for(int i = 0; i < N; i++){
bw.write(sortedNumber[i] + "\n");
}
bw.flush();
bw.close();
}
}
- 코드에 대한 설명은 크게 없다. (주석으로 간단하게 적어둠)
결과1
- Arrays라는 클래스가 제공하는 메소드를 썼더니 시간이 꽤 많이 소요되었다.
코드2
import java.io.*;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] numnbers = new int[N];
for(int i = 0; i < N; i++){
numnbers[i] = Integer.parseInt(br.readLine());
}
br.close();
Arrays.sort(numnbers);
for(int i = 0; i < N; i++){
bw.write(numnbers[i] + "\n");
}
bw.flush();
bw.close();
}
}
- 생각해보니 정렬해서 새로운 배열에 저장할 필요가 없다. (차피 정렬되어서 그 배열에 저장되니까)
- 그리고 stream()메소드 또한 반복하여 하나씩 조회하는 메소드이기 때문에 굳이 해줄 필요가 없다 sort가 알아서 해주기 때문...
- 생각보다 첫 코드를 너무 복잡하게 썼다... 이렇게 간단하게 작성할 수 있는 문제인데...
결과2
느낀점
- 문제 해결에 있어 처음엔 그냥 생각을 안하고 풀리는대로 푸는데... 그렇다 보니 코드1와 같이 시간이 많이 걸리고, 비효율적인 코드가 되어버린다... (문제는 그냥 문제가 풀리면 다 가져다 쓰는것..)
- 앞으로는 좀 생각을 해서 코드를 풀도록 되새겨야 겠다..😂