(구) solved ac class 문제들/class 1

[class 1]백준 최소, 최대(10818번) 풀이 (C++/Python)

isekaipudding 2026. 4. 20. 12:42

문제 : 최소, 최대(10818번)(Bronze III)

문제 링크 : https://www.acmicpc.net/problem/10818
출처 : Baekjoon Online Judge

 

 

이 문제는 배열의 크기와 배열이 주어졌을 때 그 배열의 최대값과 최소값을 구하는 문제입니다.

우선 C++로 구현하면서 설명 들어갑니다.

#include <bits/stdc++.h>
 
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    int max_value = -1000000;
    int min_value = 1000000;

    while(n--) {
        int a;
        cin >> a;

        if(a > max_value) max_value = a;
        if(a < min_value) min_value = a;
    }

    cout << min_value << " " << max_value;

    return 0;
}

잘 보시면 알겠지만 저는 여기서 배열을 전혀 사용하지 않았습니다.

왜냐면 이 문제는 단순하게 최소값과 최대값만 구하면 되기 때문에 배열 선언하지 않고 입력이 하나씩 주어질 때마다 즉시 비교하여 최소값과 최대값을 갱신합니다.

이 때 초기 최대값은 a의 최소값(-1000000), 초기 최소값은 a의 최대값(1000000)으로 설정해서 반드시 최소값, 최대값을 구할 수 있도록 설정합니다.

 

이렇게 하면 배열 선언을 하지 않아서 메모리 절약이 가능하면서 거의 똑같은 경과 시간을 얻게 되어 메모리 부분에서 효율성을 가집니다.

 

참고로 Python에서는 max(), min()으로 금방 구할 수 있습니다.

import sys

input = sys.stdin.readline

N:int = int(input().rstrip())
L:list = list(map(int, input().split()))

print(min(L), max(L))