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));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
int num = Integer.parseInt(st.nextToken());
if (num < min) min = num;
if (num > max) max = num;
}
sb.append(min).append(" ").append(max).append("\n");
}
System.out.print(sb);
br.close();
}
}
첫번째 풀이는 생략하였지만 배열로 입력받아 Arrays.sort
를 이용하여 정렬을 통해 최소, 최댓값을 구하였지만 생각보다 시간이 엄청높게나왔다.
그래서 그냥 값을 입력받을 때마다 바로바로 비교하는 방식으로 바꾸어 제출하니 시간이 확줄긴했다.
배열 정렬의 경우 최악의 경우 O(N^2)의 시간복잡도를 가지게되지만
바로 비교하는 경우 O(N)이라 시간차이가 꽤나게된다.