최소, 최대
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
1차원 배열
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (\( 1 ≤ N ≤ 1,000,000 \))이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
예제 입력 1
5
20 10 35 30 7
예제 출력 1
7 35
Python 풀이
풀이 1
로그인
www.acmicpc.net
import sys
a = [int(s) for s in sys.stdin.read().split()[1:]]
print(min(a), max(a))
모든 입력을 분리시킨 후 두번째 자리부터 int로 변환해준다. 그리고 python 내장함수인 min, max로 최대, 최소를 가져와 출력한다.
가장 간단하고 빠른 방법이다.
풀이 2
로그인
www.acmicpc.net
import sys
a = sorted(int(s) for s in sys.stdin.read().split()[1:])
print(a[0], a[-1])
이 방법은 정렬을 시켜준 뒤에 맨 앞과 맨 뒤의 자료를 출력한다.
이 방법도 간단하지만 이 문제에서는 [풀이 1] 보다 상대적으로 느리다.
풀이 3
로그인
www.acmicpc.net
import sys, heapq as hq
a = [int(s) for s in sys.stdin.read().split()[1:]]
hq.heapify(a)
print(*hq.nsmallest(1, a), *hq.nlargest(1, a))
마지막으로 Python 기본 모듈인 heapq를 사용하는 방법이다. 우선순위 큐 알고리즘이라고도 하는 힙(heap) 큐 알고리즘은 이진 트리로 정렬하여 최소값을 빠르게 가져온다.
이 문제에서는 최대값도 요구하기에 [풀이 1]보다 느린 속도를 보여준다.
'알고리즘 > Baekjoon' 카테고리의 다른 글
[Python] 2577번 숫자의 개수 - 백준 (0) | 2021.10.07 |
---|---|
[Python] 2562번 최댓값 - 백준 (0) | 2021.10.05 |
[Python] 1110번 더하기 사이클 - 백준 (0) | 2021.09.29 |
[Python] 10951번 A+B - 4 - 백준 (0) | 2021.09.29 |
[Python] 10871번 X보다 작은 수 - 백준 (0) | 2021.09.29 |
댓글