최소, 최대(10818)

최솟값과 최댓값을 찾는 문제

문제

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

입력

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

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int max = -1000000;
        int min = 1000000;
        int arr[] = new int[n];
//        for (int i : arr) {
//            arr[i] = sc.nextInt();
//            max = Math.max(max, arr[i]);
//            min = Math.min(min, arr[i]);
//        }
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
            if(max < arr[i])
                max = arr[i];
            if(arr[i] < min)
                min = arr[i];
        }
        System.out.println(min +" "+ max);
    }
}
  1. 입력받은 정수의 크기만큼의 배열을 생성하고, 최대값에는 정수의 최소값인 -1,000,000을 넣어주고 최소값에는 정수의 최대값인 1,000,000을 넣어준다

  2. 배열의 크기 만큼 숫자를 입력받아서 배열에 집어넣는다

  3. 최대값과 최소값을 구한다(2가지 방법)

    1. Math함수인 Math.max와 Math.min을 사용할 수 있고

    2. 직접 구현 -> for문을 돌면서 max보다 배열의 값이 크다면 max에 배열의 값을 넣어준다(이렇게 for문을 끝까지 돌게 되면 결국은 배열 중 가장 큰 값이 max변수에 들어가 있음)

오랜만에 다시 풀어봤는데 어렵지 않네요... 쉬운문제부터 하나하나 차근차근!!

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int arr[] = new int[num];
        int min = 1000000; int max = -1000000;
        for(int i=0; i<num; i++){
            arr[i] = sc.nextInt();
            if(min > arr[i])
                min = arr[i];
            if(max < arr[i])
                max = arr[i];
        }
        System.out.println(min + " "+max);
    }
}

Last updated

Was this helpful?