1. 문제
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있다.
각 테스트 케이스의 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
각 테스트 케이스마다 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 한 줄에 하나씩 차례대로 출력한다.

2. 코드
package solv.marathon.course012;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
int[] list = new int[N];
StringTokenizer token = new StringTokenizer(br.readLine());
for (int j = 0; j < list.length; j++) {
list[j] = Integer.parseInt(token.nextToken());
}
Arrays.sort(list);
bw.write(list[0] + " " + list[N - 1] + "\n");
}
bw.flush();
bw.close();
}
}
3. 해설
배열의 정렬 기능을 이용해서 첫 인덱스와 마지막 인덱스의 값을 출력한다
문제점 : N이 1,000,000 까지 받아오는데 배열의 크기가 그만큼 커지니 시간이 오래걸림
4. 다른 풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
int max = -1000001;
int min = 1000001;
StringTokenizer token = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
int num = Integer.parseInt(token.nextToken());
max = Math.max(max, num);
min = Math.min(min, num);
}
bw.write(min + " " + max + "\n");
}
bw.flush();
bw.close();
}
}
- 숫자 하나를 받을 때마다 현재 최소 최대랑 비교해서 최소값 최대값을 최신화한다
'Java > 알고리즘(코테)' 카테고리의 다른 글
백준 4949번 : 균형잡힌 세상 (0) | 2024.08.27 |
---|---|
백준 2164번 : 카드2 (0) | 2024.08.25 |
백준 10814번 : 나이순 정렬 (0) | 2024.08.17 |
백준 10989번 : 수 정렬하기 3 (0) | 2024.08.14 |
프로그래머스 2024 KAKAO WINTER INTERNSHIP : 가장 많이 받은 선물 (0) | 2024.08.09 |