성장일기

내가 보려고 정리하는 공부기록

코딩테스트/백준 브론즈,실버

[백준] 10818 : 최소, 최대 (stream의 min, max) - JAVA

와나나나 2024. 1. 14. 00:56
728x90

백준 단계별 문제풀이 4단계 (1차원 배열)

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

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

www.acmicpc.net

 

# 문제

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

 

# 예제

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

5
20 10 35 30 7

 

출력

7 35

 

# 필요개념

for문이랑 max 변수 만들어서 if문 이용하면 구현 가능할 거 같지만 또 스트림을 이용했다.

자바의 스트림은 max, min 메소드를 지원해주기 때문에 변수를 별도로 설정하지 않아도 된다!

 

stream의 min, max 메소드는 반환형이 Optional 객체이기 때문에, int형으로 형 변환 과정을 거쳐야 한다. 스트림에서 int로의 형변환은 getAsInt() 메소드를 사용한다.

 

# Code

import java.util.*;
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();
        }
        System.out.print(Arrays.stream(arr).min().getAsInt() + " " + Arrays.stream(arr).max().getAsInt());
    }
}

 

# 결과