BAEK_10818(최소, 최대)

Max·2022년 10월 3일
0

BAEKJOON

목록 보기
19/21

백준 10818 최소, 최대


- 문제

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


- 입력

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



- 풀이


  • 방법 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);
        System.out.println(arr[0] + " " arr[N - 1]);
     }
 }

기본 Scanner을 이용한 방식이다.
배열 크기를 입력 받고 반복문을 통해 배열 크기만큼 값을 입력해 넣어주는 방법이다.

Arrays.sort() 메소드를 사용하면
최솟값, 최댓값을 쉽게 구할 수가 있다.

Arrays.sort 메소드는 배열에 저장된 값을 오름차순으로 정렬해준다.
이 메소드를 통해 정렬을 하면 최솟값은 배열 첫번째 값(index 0), 최댓값은 배열의 마지막 값(N - 1)에 있게 된다.


  • 방법 2
import java.util.Arrays;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokeinzer;

public class Main {
	public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        
        int Index = 0;
        int[] arr = new Int[N];
        while(st.hasMoreToken()) {
        	arr[index] = Integer.parseInt(st.nextToken());
           	index++;
        }
        
        Arrays.sort(arr);
        System.out.println(arr[0] + " " + arr[N - 1]);
	}
 }

BufferedReader을 이용한 방식이다.
입력 값이 문자열로 반환하기 때문에 Integer.parseInt()로 int형으로 변환시켜준다.

st.hasMoreToken는 StringTokenizer에 토큰이 남아있으면 true, 비어있으면 false를 반환한다.

그리고 방법 1처럼 Arrays.sort()을 통해 오름차순 정렬하고
첫번째와 마지막 값을 출력해주면 된다.

profile
co_der

0개의 댓글