문제
풀이
1. 정렬을 통한 풀이
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] intArray = new int[N];
for (int i=0; i<N; i++) {
intArray[i] = scanner.nextInt();
}
Arrays.sort(intArray);
System.out.printf("%d %d", intArray[0], intArray[N - 1]);
}
}
Arrays.Sort는 TimSort 알고리즘을 사용하여 정렬을 하며 시간복잡도는 O(nlogn) 이다.
2. stream의 max(), min()을 사용한 풀이
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] intArray = new int[N];
for (int i=0; i<N; i++) {
intArray[i] = scanner.nextInt();
}
System.out.printf("%d %d", Arrays.stream(intArray).min().getAsInt(), Arrays.stream(intArray).max().getAsInt());
}
}
stream의 max(), min() 메소드는 한 번만 순회(Linear traversal)를 하기 때문에 시간복잡도는 O(n)이다.