백준[자바]

[백준/Java] - 10818번 최소, 최대

코린이 파닥거리기 2025. 2. 14. 20:27
728x90
반응형
SMALL

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

1차원 배열 최대값과 최소값을 구하는 문제이다.

일단 리스트로 받고, 리스트안에서 최대나 최소값을 구해야한다.

 

제출코드

1.배열로 받아서 Arrays.stream().max().getAsInt()로 구하기

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

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());
        String[] str1 = br.readLine().split(" ");
        int[] arr = new int[str1.length];
        for(int i = 0; i< str1.length; i++){
            arr[i] = Integer.parseInt(str1[i]);
        }
        int max = Arrays.stream(arr).max().getAsInt();
        int min = Arrays.stream(arr).min().getAsInt();
        System.out.println(min + " " + max);
    }
}

max변수를 구하기위해서는 배열 arr을 stream객체로 변환시켜준다.

※stream객체는 배열이나 컬렉션을 함수형 스타일로 처리할 수 있게 해주는 자바8의 기능이다.

 

  • .max함수는스트림 내부 요소에서 최대값을 반환한다.
    • ->arr을 stream객체로 변환시켰으니 stream객체인 arr에서 최대값을 반환한다.
    • but, 반환된 값이 Int형식이 아니라 OptionalInt형식이다. 이유는 배열이 비어있을 수도 있기 때문에 값이 없을 가능성도 고려해야하기 때문이다.

 

  • .getAsInt()함수OptionalInt형식에서 실제 Int값을 꺼내는 함수이다. getAsInt를 호출하면 실제값을 반환한다. 그리고 값이 없을경우에는 NoSuchElementException예외가 발생한다.

2.ArrayList로받아서 Collections함수를 이용해서 max와 min값 구하기

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

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());
        String[] str1 = br.readLine().split(" ");
        ArrayList<Integer> arr = new ArrayList<>();
        for(int i = 0; i< str1.length; i++){
            arr.add(Integer.parseInt(str1[i]));
        }
        int max = Collections.max(arr);
        int min = Collections.min(arr);
        System.out.println(min + " " + max);
    }
}

위 코드와 똑같은데 값을 배열로 받는게 아니라 ArrayList로 받아서 Collectgions로 최대값과 최소값을 구한다.

그 이유로는 일반적으로 배열은 Collections인터페이스가 지원하는 자료구조가 아니기때문이라서 그렇다.

728x90
반응형
LIST