본문 바로가기

알고리즘/백준

[10818]최소, 최대

수행일자 : 2021.07.20


https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net


문제

  • 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