문제

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

www.acmicpc.net/problem/10818

입력

첫째 줄에 정수의 개수 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 쓰는 게 나을 것 같다.