본문 바로가기

알고리즘/백준

[백준 / 입출력] 10818 : 최소, 최대 (Java)

728x90

<정답1 : 배열 사용x>

import java.io.*;
import java.util.*;

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 min = Integer.parseInt(st.nextToken());
        int max = min;
        
        for(int i=0; i<n-1; i++){
            int t = Integer.parseInt(st.nextToken());
            if(t < min){
                min = t;
            } 
            else if(t > max){
                max = t;
            }
            
        }
        
        System.out.print(min+" "+max);
        
    }
}

 

<정답2: 배열 사용o>

import java.io.*;
import java.util.*;

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[] arr = new int[n];
        int index = 0;
        
        while(st.hasMoreTokens()){
            int t = Integer.parseInt(st.nextToken());
            arr[index++] = t; 
        }
        Arrays.sort(arr);
        
        System.out.print(arr[0]+" "+arr[n-1]);
        
    }
}

hasMoreTokens()는 boolean 함수로 뒤에 token이 있으면 true, 없으면 false를 반환한다.

여기서는 배열의 정렬 기능을 이용해 min과 max를 구했다.

import java.util.Arrays;
Arrays.sort(배열이름); //오름차순으로 정렬한다.

정답2: 배열사용o
정답1: 배열사용x

배열을 사용하는 경우 전체를 하나하나 비교해서 정렬하기 때문에 시간이 훨씬 많이 걸린다. (배열의 정렬은 최악의 경우 시간복잡도가 N^2이다.)

반응형