수행일자 : 2021.07.20
https://www.acmicpc.net/problem/10818
문제
- N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
- 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
입출력 예제
이번에는 Scanner 없이 BufferedReader 만 사용해서 아래의 2가지 방식으로 풀어보려고 한다.
- Arrays 클래스의 sort() 메소드를 사용하지 않고 직접 비교하는 방법
- 메소드 사용 없이 바로바로 값을 비교해주는 방법
1. BufferedReader / 직접 비교
문제에 모든 정수는 -100,000,000 보다 크거나 같고 100,000,000 보다 작거나 같다고 되어있기에 max와 min 변수에 각각 가장 작은 값과 가장 큰 값으로 초기화를 해준다.
그리고 토큰을 이용해서 N 개의 수를 arr 배열 안에 넣어준다.
이제 for문으로 반복을 돌리며 각각의 수가 최소인지 최저인지 비교하여 max와 min 변수에 넣어준다.
해당 문제는 정적인 값을 출력하는 것이므로 System.out.println() 을 사용하여 각각의 변수 값을 출력해준다.
답안 소스
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));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
int max = -1000000;
int min = 1000000;
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
if(arr[i] < min) {
min = arr[i];
}
if(arr[i] > max) {
max = arr[i];
}
}
System.out.println(min + " " + max);
}
}
2. BufferedReader / Arrays.sort()
이번에는 Arrays 클래스의 정렬 메소드인 sort() 를 사용해서 풀어볼 것이다.
for문에서 반복을 돌면서 arr 배열에 값을 넣어준다.
Arrays.sort() 메소드는 배열에 저장된 값들을 오름차순으로 정렬해주는 메소드이다.
이 메소드를 사용하여 값을 순차적으로 정렬하면 최소값은 0번째 배열에, 최대값은 마지막 배열에 자동 정렬되므로 해당 인덱스에 저장되어 있는 값을 출력해주면 된다.
답안 소스
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
System.out.println(arr[0] + " " + arr[N-1]);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[2577]숫자의 개수 (0) | 2021.07.25 |
---|---|
[2562]최댓값 (0) | 2021.07.22 |
[1110]더하기 사이클 (0) | 2021.07.17 |
[10951]A+B - 4 (0) | 2021.07.11 |
[10952]A + B -5 (0) | 2021.07.11 |