본문 바로가기
Algorithm/Baekjoon

[백준] 10818번 : 최소, 최대 - Java

by unknownomad 2022. 3. 2.

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

 

10818번: 최소, 최대

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

www.acmicpc.net



주의점

  • N개의 정수가 공백으로 구분 후 입력됨

풀이

1. Scanner + Array (배열)

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
        
        int N = in.nextInt();
        int[] arr = new int[N];
        
        for(int i = 0; i < N; i++) {
            arr[i] = in.nextInt();
        }
        
        in.close();
        Arrays.sort(arr); //오름차순 정렬
        System.out.print(arr[0] + " " + arr[N - 1]);
    }
}

 

2. BufferedReader + StringTokenizer + Array

import java.util.Arrays;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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 st = new StringTokenizer(br.readLine()," "); //공백 단위로 분리
		
        int idx = 0;
        int[] arr = new int[N];
        //StringToken에 있는 모든 토큰이 없어질 때까지 배열에 담기
        //String.hasMoreTokens(): StringTokenizer에 토큰 남아있으면 true / 없으면 false
        while(st.hasMoreTokens()) {
            //String.nextToken(): return String
            arr[idx] = Integer.parseInt(st.nextToken()); //String➡int
            idx++;
        }
		
        Arrays.sort(arr);
        System.out.print(arr[0] + " " + arr[N - 1]);
    }
}

 

3. BufferedReader

  • Array 사용 X + 입력 받은 문자 즉시 비교 ➡ 시간 및 메모리 절약
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args) throws IOException {
    
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        Integer.parseInt(br.readLine()); //첫 번째 줄
        StringTokenizer st = new StringTokenizer(br.readLine()," "); //두 번째 줄
		
        int max = -1000001; //가장 작은 수 ➡ 점점 크게
        int min = 1000001; //가장 큰 수 ➡ 점점 작게
		
        while(st.hasMoreTokens()) {
            int val = Integer.parseInt(st.nextToken());
            if(val > max) { //가장 작은 수인 max보다 크면
                max = val; //max값 변경9
            }
            if(val < min) { //가장 큰 수인 min보다 작으면
                min = val; //min값 변경
            }
        }
        System.out.println(min + " " + max);
    }
}

성능

  1. BufferedReader
  2. BufferedReader + StringTokenizer + Array
  3. Scanner + Array

 


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

댓글