[문제]
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
[입력]
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
[출력]
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
[예제 입력]
5
20 10 35 30 7
[예제 출력]
7 35
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
System.out.print(arr[0] + " " + arr[n-1]);
}
}
배열을 사용해 n개의 숫자를 넣어준 후, Arrays.sort를 이용해 오름차순으로 정렬했다.
arr[0]이 배열의 숫자 중 최솟값, arr[n-1]이 최댓값이 된다.
시간이 오래걸리길래
다른 풀이 방법이 있는지 찾아봤는데,
BufferdReader를 쓰는 방식이 있었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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));
int n = Integer.parseInt(br.readLine()); // 공백도 같이 입력됨
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int idx = 0;
int[] arr = new int[n];
while(st.hasMoreTokens()) {
arr[idx] = Integer.parseInt(st.nextToken());
idx++;
}
Arrays.sort(arr);
System.out.print(arr[0] + " " + arr[n-1]);
}
}
readLine은 공백도 같이 입력된다.
StringTokenizer로 공백을 분리해준 후, 최소값/최대값을 구한다.
주의할 점은st.nextToken은 문자열을 반환하므로 int형으로 변환해줘야 한다.
'Algorithm > Baekjoon' 카테고리의 다른 글
백준 / 3052번 / 나머지 (0) | 2022.07.04 |
---|---|
백준 / 입출력 / 1924번 / A+B - 4 (0) | 2022.07.03 |
백준 / 입출력 / 2445번 / 별 찍기 - 8 (0) | 2022.07.02 |
백준 / 입출력 / 2439번 / 별 찍기 - 2 (0) | 2022.07.02 |
백준 / 입출력 / 10953번 / A+B - 6 (0) | 2022.07.02 |