본문 바로가기

개발/JAVA

[JAVA 백준] 10817. 세 수

 


세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 

 

문제는 매우 간단하지만 새롭게 알게 된 게 있으면 공부가 되는 거니까

문제를 풀다가 입력받은 int 를 배열에 넣는 더 효율적인 소스를 알게되어서 같이 작성해보려고 한다.

 

먼저 내 소스는

import java.util.*;

   public class Main {

      public static void main(String[] args) {

         Scanner sc = new Scanner(System.in);

         int a = sc.nextInt();

         int b = sc.nextInt();

         int c = sc.nextInt();

         sc.close();                           //sc.close()를 통해 메모리 사용량을 줄일 수 있다.

 

         int[] arr = {a,b,c};

         Arrays.sort(arr);                  //Arrays 의 sort 메소드 사용하여 오름차순 정렬

         System.out.println(arr[1]);  //두번째 element 출력

      }

}

나는 입력받은 int 를 하나씩 직접 배열 선언시에 넣어줬는데 만약 입력되는 int의 개수가 매우 많을 때에는 비효율적일 수 있다.

 

 

따라서 

import java.util.*;

   public class Main {

      public static void main(String[] args) {

         Scanner sc = new Scanner(System.in);

         int[] arr = new int[3];                        //입력될 int 개수 크기 만큼 배열 선언

         for (int i = 0; i < arr.length; ++i) {      //배열 arr 에 입력받는 int 넣기

              arr[i] = sc.nextInt();

         }

         Arrays.sort(arr);

         System.out.println(arr[1]);

   }

}

이렇게 배열 선언시에 크기만 명시하고 나중에 for 문으로 element 를 넣어주는 방법도 있다.