문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
최종 코드
이 문제는 파이썬의 min
, max
함수를 사용하면 정말 간단하게 풀 수 있다.
N = int(input())
l = list(map(int, input().split()))
print(min(l), max(l))
처음에 이렇게 풀었지만 다른 풀이로도 풀어보았다.
다른 풀이
N = int(input())
l = list(map(int, input().split()))
l.sort()
print(l[0], l[-1])
첫 번째 방법은 sort
를 사용하는 것이다. sort를 사용해서 리스트를 정렬해주면 첫 번째 원소가 최소, 마지막 원소가 최대값이 된다.
N = int(input())
l = list(map(int, input().split()))
min = max = l[0]
for i in range(1, N):
if min > l[i]:
min = l[i]
if max < l[i]:
max = l[i]
print(min, max)
두 번째는 for loop을 이용하여 최소값과 최대값을 구하는 것이다.
어떤 방법이 빠를까 싶어서 이렇게 세 가지 풀이를 가져와봤는데 결과적으로 min, max 함수를 쓰는 게 제일 빨랐고 sort를 사용하는 방법이 가장 느렸다. 그냥 min, max 쓰는 게 나을 것 같다.