본문 바로가기
문제 풀이/BAEKJOON

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

by 망고 ෆ 2021. 9. 18.
문제

 

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

 

풀이1

 

첫째 줄에 정수 N을 입력받는다.

 

둘째 줄에 N개의 정수를 공백으로 구분해서 입력 받아야 하는데, 이는 split() 함수를 이용하여 해결할 수 있다.

split() 함수는 문자열을 나누는 함수이고, 괄호 안에 아무것도 없으면 공백을 기준으로 문자열을 나눈다는 의미이다.

 

최솟값과 최댓값을 구하기 위해 min, max라는 변수를 만들고 각각 num[0]을 저장해주었다.

이 후, for문을 돌면서 num 리스트의 모든 값들과 하나씩 비교하고 현재 저장된 num[0] 값보다 작으면 min, 크면 max로 바꿔 저장하여 최솟값과 최댓값을 구할 수 있다. 

 

N = int(input())				#N개의 정수

num = list(map(int, input().split()))		#공백으로 구분하여 정수를 입력받아 num 리스트에 저장

min = num[0]
max = num[0]

for i in range(N):		
    if(num[i]<min):		#num[i]가 min값보다 작으면 min값을 num[i]로 수정
        min = num[i]
    if(num[i]>max):		#num[i]가 max값보다 크면 max값을 num[i]로 수정
        max = num[i]

print(min, max, end = " ")		#공백으로 구분하여 최솟값, 최댓값 출력

 

 

풀이2

 

두번째는 최솟값, 최댓값을 더 빠르게 구하기 위해 내장함수를 이용하였다.

 

min()은 인수로 받은 자료형 내에서 최솟값을 찾아 반환해주고,

max()은 인수로 받은 자료형 내에서 최댓값을 반환해 주는 함수이다.

 

따라서,  위 함수를 통해 아래와 같이 간결하게 구현할 수 있다.

 

N = int(input())		

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

print(min(num), (max(num)), end = " ")		#최솟갑과 최댓값을 공백으로 구분하여 출력

 

댓글