최솟값 최댓값
백준 Bronze III | 10818 | Python | 문제 링크
문제 설명
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
입출력 예
| 입력 | 출력 |
|---|---|
| 5 20 10 35 30 7 |
7 35 |
나의 풀이
풀이 1
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
print(nums[0], nums[-1])
정렬 후 첫 번째 원소가 최솟값, 마지막 원소가 최댓값이다.
풀이 2
import sys
input = sys.stdin.readline
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
print(nums[0], nums[-1])
풀이 1과 동일한 방식이지만 sys.stdin.readline으로 입력 속도를 개선했다. N이 최대 1,000,000이므로 입력량이 많을 때 유효하다.
풀이 3
import sys
input = sys.stdin.readline
n = int(input())
nums = list(map(int, input().split()))
print(min(nums), max(nums))
정렬 없이 내장 함수 min(), max()로 바로 구한다. 정렬의 O(N log N) 대신 O(N) 순회로 처리한다.
풀이 4
import sys
input = sys.stdin.readline
n = int(input())
nums = list(map(int, input().split()))
min_val, max_val = nums[0], nums[0]
for idx in range(n):
if nums[idx] > max_val:
max_val = nums[idx]
if nums[idx] < min_val:
min_val = nums[idx]
print(min_val, max_val)
min(), max() 없이 직접 순회하며 최솟값과 최댓값을 갱신한다. 내장 함수 없이 동일한 O(N) 로직을 구현한 것으로, 알고리즘 원리를 직접 표현한 풀이다.
'CodingTest > BeakJoon' 카테고리의 다른 글
| [3273] 두 수의 합 (0) | 2026.03.10 |
|---|---|
| [10809] 알파벳 찾기 (0) | 2026.03.10 |
| [9086] 문자열 (0) | 2026.03.10 |
| [2562] 최댓값 (0) | 2026.03.10 |
| [백준] 파이썬 기초 문법 연습 문제 (0) | 2026.03.08 |
