[백준] 최소, 최대(Python - 10818번)

규갓 God Gyu·2024년 10월 25일

백준

목록 보기
82/96

문제

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

매서드는 있을 것 같은데 떠오르진 않고, 한개씩 비교해가며 변수에 값을 할당하면 풀 수 있을거라 생각했다. 그치만 그러기 위해 무한 +정수 값 무한-정수 값도 알았어야하긴했어서 float('inf') 가 필요하긴했지만..

최종 코드

N = int(input())
list = list(map(int, input().split()))

minInt = float('inf')
maxInt = float('-inf')

for i in range(N):
  if list[i] > maxInt:
    maxInt = list[i]
  if list[i] < minInt:
    minInt = list[i]
    
print(minInt, maxInt)

정말 노가다로 풀어서 걸린 시간이 가장 오래 걸렸을 것이다. 그래서 더 효율 적인 답을 찾아보기로 하였다.

역시나 리스트에서 최소값 최대값구하는 메서드 min(), max()가 있었고, 그걸 적용하면

N = int(input())
numbers = list(map(int, input().split()))

minInt = min(numbers)
maxInt = max(numbers)

print(minInt, maxInt)

이렇게 간단히 풀 수 있었는데, 채점 시간 자체는 여전히 오래걸리긴하였다.
(시간복잡도 O(N))

profile
웹 개발자 되고 시포용

0개의 댓글