문제
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
풀이1
max, min 함수 사용
n = int(input())
num = list(map(int, input().split()))
# max, min 함수 사용시
print(min(num), max(num))
풀이2
내장 함수 사용하지 않고 구현
n = int(input())
num = list(map(int, input().split()))
# 내장함수 사용하지 않았을 경우
max_num = num[0]
min_num = num[0]
for i in range(len(num)):
if max_num <= num[i]:
max_num = num[i]
elif min_num >= num[i]:
min_num = num[i]
print(min_num, max_num)
다른 풀이 이해하기
1. sort로 정렬하는 방법
n = int(input())
num = list(map(int, input().split()))
num.sort()
print(num[0], num[-1])
결과
메모리 크기는 풀이1 > 풀이2 이고, 수행 시간은 풀이2 > 풀이1
sort로 정렬한 방식은 메모리 크기는 풀이2와 유사하나 수행 시간이 708ms로 오래 걸린다.
https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
'알고리즘' 카테고리의 다른 글
[Python] 백준 10870번 피보나치 수5 (0) | 2022.11.27 |
---|---|
[Python] 백준 2460번 지능형 기차2 (0) | 2022.11.26 |
[Python] 백준 2501번 약수 구하기 (0) | 2022.11.26 |
[Python] 백준 3460번 이진수 (0) | 2022.11.26 |
[백준 1110] 더하기 싸이클 (0) | 2022.01.11 |