글 작성자: 취업중인 피터팬
728x90

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

 

10818번: 최소, 최대

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

www.acmicpc.net

사용 언어 : Java 11

배열을 사용하여 최소 최대를 구하는 간단한 문제입니다.

"N개의 정수를 공백으로 입력받는다"에서 StringTokenizer을 사용하여 해결했습니다.(공백으로 받지 않아도 문제는 정답으로 되는거 같습니다.) split를 사용할려 했지만 StringTokenizer을 알고 있지만 사용을 한번도 못해봐서 이번 기회에 사용해 봤습니다.

StringTokenizer : 문자열을 구분자로 나누어 나눠주는 클래스(공백을 기본으로 분리합니다.)

hasMoreTokens() : 반복문에서 StringTokenizer로 나눈 다음 문자열이 있으면 true를 없으면 false를 출력하는 StringTokenizer 메소드입니다.

nextToken() : 순서대로 StringTokenizer로 나눈 문자열를 가져오는 메소드입니다.

 

다음 부터는 그냥 배열을 사용해야 될거 같습니다. 기억을 못할것 같아서..

sort를 사용하지 않고 직접 비교하는 방법으로 코드를 작성했습니다.

 

정답

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String stArray = "";
        int n;
        
        n = sc.nextInt();
        sc.nextLine();
        stArray = sc.nextLine();
        
        StringTokenizer st = new StringTokenizer(stArray);
        
        ArrayList<Integer> array = new ArrayList();
        while(st.hasMoreTokens()){
            array.add(Integer.parseInt(st.nextToken()));
        }
                      
        int max = array.get(0);
        int min = array.get(0);
                      
        for(int i=0; i < n; i++){
            if(max < array.get(i)){
                max = array.get(i);
            }
            if(min > array.get(i)){
                min = array.get(i);
            }
        }
        
        System.out.println(min + " " + max);
        
        
    }
}