본문 바로가기

백준/브론즈 탈출하기

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

문제

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

입력

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

출력

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

예제 입력 1 복사

5
20 10 35 30 7

예제 출력 1 복사

7 35

 

1차 시도

import java.util.Scanner;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt(); // 숫자의 개수
    int arr[] = new int[N]; // 입력 받은 숫자 만큼 배열에 저장 

    
    for(int i=0; i<N; i++){
      arr[i] = sc.nextInt(); // 숫자를 저장
    }
    
    Arrays.sort(arr);
    int max=arr[0];;
    int min=arr[0]; // 최솟값 최대값 선언
    
    for(int i=0; i<N; i++){
      if(max<arr[i])
        max = arr[i];
      else if(min>=arr[i])
        min = arr[i];
    }

    System.out.printf("%d %d", min, max);

  }
}

Arrays.sort로 배열을 정리했는데, max, min을 구하는 반복문이 불필요해서 삭제

 

 

2차 시도 

import java.util.Scanner;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt(); // 숫자의 개수
    int arr[] = new int[N]; // 입력 받은 숫자 만큼 배열에 저장 

    
    for(int i=0; i<N; i++){
      arr[i] = sc.nextInt(); // 숫자를 저장
    }
    
    Arrays.sort(arr);
    int max=arr[N-1];;
    int min=arr[0]; // 최솟값 최대값 선언

    System.out.printf("%d %d", min, max);

  }
}

다른 방법 : java에서는 Math클래스가 있어서 Math.max, Math.min으로 출력하는 방법도 있다.