N개의 정수가 주어진다. 이 때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
배열 문제여서 배열을 사용하는 방식으로 접근해보니 시간이 너무 길게 나와버렸다. 배열의 시간복잡도를 확인해보니, 최악의 경우 O(N²)로, 상당히 높았다. 따라서 입력값을 바로 받아 연산하는 것이 시간적으로 빠른 방법이 될 것 같아 제출 답안 작성한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
while(st.hasMoreTokens()){
int value = Integer.parseInt(st.nextToken());
max = max < value ? value : max;
min = min > value ? value : min;
}
System.out.print(min + " "+ max);
}
}