백준 2750 수 정렬하기[JAVA]

Ga0·2023년 4월 18일
0

baekjoon

목록 보기
32/137
post-custom-banner

문제 해석

  • 첫번 째 줄에는 수의 개수인 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()); //N개의 수를 배열에 넣어 저장
        }
        br.close();
		// 해당 numbers의 배열을 Arrays 클래스의 stream메소드를 사용하여 numbers의 요소를 하나씩 돌면서
        // sorted()메소드로 작은수 -> 큰수로 정렬을 한후 배열로 바꿔 새로은 뱌열 sortedNumber에 저장
        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와 같이 시간이 많이 걸리고, 비효율적인 코드가 되어버린다... (문제는 그냥 문제가 풀리면 다 가져다 쓰는것..)
  • 앞으로는 좀 생각을 해서 코드를 풀도록 되새겨야 겠다..😂
post-custom-banner

0개의 댓글