코딩테스트/백준

[Java][백준 10818번] : 최소, 최대

블로그 주인장 2023. 8. 9.

[ 목차 ]

    📢 문제 출처

     

    10818번: 최소, 최대

    첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

    www.acmicpc.net


    ⏰ 문제 설명

    • N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

    ⏰ 입출력 예시


    ⏰ 풀이

    💡 1번 풀이 (feat. ArrayList)

    import java.util.*;
    
    public class BOJ_10818 {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            ArrayList<Integer> arrlist = new ArrayList<Integer>();
    
            int N = sc.nextInt();
    
            //값을 ArrayList에 넣는다.
            for (int i = 0; i < N; i++) {
                int j = sc.nextInt();
    
                arrlist.add(j); //값 대입
            }
    
            System.out.println("== ArrayList 정렬 전 ==");
            System.out.println("ArrayList = " + arrlist);
    
            //Array Sorting
            arrlist.sort(Comparator.naturalOrder());   //오름차순 정렬
    
            System.out.println("== ArrayList 정렬 후 ==");
            System.out.println("ArrayList = " + arrlist);
    
            System.out.println("== ArrayList 최소, 최대값 ==");
            System.out.println(arrlist.get(0) +" " + arrlist.get(arrlist.size()-1));
        }
    }

    💡 2번 풀이 (feat. Arrays.sort)

    import java.util.*;
    
    public class BOJ_10818 {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            ArrayList<Integer> arrlist = new ArrayList<Integer>();
    
            int N = sc.nextInt();
            int[] iArr = new int[N];    //배열 갯수 선언
    
            //값을 ArrayList에 넣는다.
            for (int i = 0; i < N; i++) {
                int j = sc.nextInt();
    
                iArr[i] = j;    //값 대입
            }
            System.out.println("== 배열(1) 정렬 전 ==");
            System.out.println("배열 = " + Arrays.toString(iArr));
    
            System.out.println("== 배열(1) 정렬 후 ==");
            Arrays.sort(iArr);  //배열 함수
            System.out.println("배열 = " + Arrays.toString(iArr));
    
            System.out.println("== 배열(1) 최소, 최대값 ==");
            System.out.println(iArr[0] + " " + iArr[iArr.length - 1]);
        }
    }
    • Arrays.sort 사용 시에는 시간 복잡도가 증가되는 것을 알아둬야한다.

    💡3번 풀이 (feat. 배열 값 비교)

    import java.util.*;
    
    public class BOJ_10818 {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            ArrayList<Integer> arrlist = new ArrayList<Integer>();
    
            int N = sc.nextInt();
            int[] iArr2 = new int[N];    //배열 갯수 선언
    
            //값을 ArrayList에 넣는다.
            for (int i = 0; i < N; i++) {
                int j = sc.nextInt();
    
                iArr2[i] = j;    //값 대입
            }
    
            System.out.println("== 배열(2) 정렬 전 ==");
            System.out.println("배열 = " + Arrays.toString(iArr2));
    
            //min과 max에 작은 값을 대입
            int min = iArr2[0];
            int max = iArr2[0];
            
            //배열의 갯수만큼 반복
            //min값과 max 값보다 작거나 크면 값을 min과 max에 대입
            //최종 값은 배열에서 가장 작은 값은 min, 큰 값은 max으로 출력
            for (int num : iArr2) {
                if (num < min) {
                    min = num;
                } else if (num > max) {
                    max = num;
                }
            }
            System.out.println("== 배열(2) 최소, 최대값 ==");
            System.out.println(min + " " + max);
        }
    }

    💡4번 풀이 (feat. Arrays.stream)

    import java.util.*;
    
    public class BOJ_10818 {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            ArrayList<Integer> arrlist = new ArrayList<Integer>();
    
            int N = sc.nextInt();
            int[] iArr = new int[N];    //배열 갯수 선언
    
            //값을 ArrayList에 넣는다.
            for (int i = 0; i < N; i++) {
                int j = sc.nextInt();
    
                iArr[i] = j;    //값 대입
            }
    
            int min = Arrays.stream(iArr).min().getAsInt();
            int max = Arrays.stream(iArr).max().getAsInt();
            System.out.println("== Arrays.stream() 최소, 최대값 ==");
            System.out.println(min + " " + max);
        }
    }

     

     

    반응형

    댓글