문제 풀이

[백준] 10818번: 최소, 최대 - JAVA (자바)

auyeol 2023. 2. 13. 21:55
728x90

 

 

문제

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

 

10818번: 최소, 최대

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

www.acmicpc.net

 

입력할 갯수 N을 입력받은 뒤, 정수들을 입력한다. 입력한 정수 중에서 최솟값과 최댓값을 출력하는 문제이다. 

 

입력                                    출력
4                                       2 15  
2 10 15 6

------------------------------------------------------------------------------------------------------------------

 

 

풀이

 

정수들을 입력받은 뒤, 첫번째 배열 값을 초기값으로 설정하였다.

 

            >    min = array1[0], max = array1[0]

 

이후, 배열의 원소 값 중 min보다 작은 경우 최솟값으로 설정, 배열의 원소 값 중 max보다 큰 경우 최댓값으로 설정되게 반복문을 만들었다.

 

 

(1) Scanner 사용 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt(); 
		
		int array1[] = new int[n];
		
		for(int i=0;i<array1.length;i++) {
			array1[i] = sc.nextInt();
		}
		
		sc.close();
		
		int min = array1[0];
		int max = array1[0];
		
		for(int i=0;i<array1.length;i++) {
			if(min>array1[i]) min = array1[i];
			if(max<array1[i]) max = array1[i];
		}
		System.out.println(min+" "+max);
		
	}
}

 

 

------------------------------------------------------------------------------------------------------------------

 

 

(2) BufferdReader 사용 

 

 

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());
		
		StringTokenizer strtk = new StringTokenizer(br.readLine()," ");
		
		int array1[] = new int[n];
		
		for(int i=0;i<array1.length;i++) {
			array1[i] = Integer.parseInt(strtk.nextToken());
		}
		br.close();
		
		int min = array1[0];
		int max = array1[0];
		
		for(int i=0;i<array1.length;i++) {
			
			if(array1[i]>max) max = array1[i];
			if(array1[i]<min) min = array1[i];
		}
		System.out.println(min+" "+max);
		
	}
}

 

 

위가 BufferedReader, 아래가 Scanner를 사용했을 때이다.

 

입력되는 범위가 넓어서 메모리와 시간 차이가 무려 3배나 났다.

 

728x90