백준[자바]
[백준/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