본문 바로가기

알고리즘

[백준] 10818번: 최소, 최대 (java, python)

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

 

10818번: 최소, 최대

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

www.acmicpc.net


🗒 풀이

java

1) 배열 이용

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = sc.nextInt();
        }

        Arrays.sort(arr);
        System.out.println(arr[0] + " " + arr[N-1]);
    }
}

Scanner로 입력 크기(N)을 받은 다음, 크기가 N인 배열을 생성한다.

순차적으로 배열의 원소들을 입력받은 후, Arrays.sort()를 통해 오름차순 정렬을 해준다.

정렬이 되어있기 때문에, 인덱스가 0 인 것이 최소, N-1인 것이 최대임을 알 수 있다.


2) 단순 비교

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));
        Integer.parseInt(br.readLine()); // N 값인데 쓰이지 않으므로 받기만 하기
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int min =  1000000;
        int max = -1000000;
        while (st.hasMoreTokens()) {
            int value = Integer.parseInt(st.nextToken());
            if (value < min) {
                min = value;
            }
            if (value > max) {
                max = value;
            }
        }

        System.out.println(min + " " + max);

    }
}

최대, 최소의 값만 필요하기 때문에 굳이 배열에 저장하지 않아도 된다고 생각했다.

이 경우에선 N의 값이 굳이 필요하지 않으므로 Integer.parseInt()로 N값만 받아오고 굳이 변수에 저장하진 않는다.

문제에서 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수라는 조건을 이용하여, 최소는 1000000, 최대는 -1000000으로 지정한다.

후, 받아오는 값들을 min, max 값과 비교하여 저장하고, 마지막에 출력해주면 된다.


python

N = int(input())
arr = list(map(int, input().split()))
print(min(arr), max(arr))

입력 받은 값들을 바로 정수형 배열로 변환한다.

파이썬의 min(), max() 함수를 사용하여 배열의 최소, 최대값을 가져온다.