Cute Running Puppy [Python] 백준 10818번 최대, 최소

알고리즘

[Python] 백준 10818번 최대, 최소

수웅 2022. 11. 26. 23:27

문제

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