문제
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 = " ") #최솟갑과 최댓값을 공백으로 구분하여 출력
'문제 풀이 > BAEKJOON' 카테고리의 다른 글
[백준/JAVA] 11654번. 아스키 코드 (0) | 2021.08.05 |
---|---|
[백준/JAVA] 1065번. 한수 (0) | 2021.08.04 |
[백준/JAVA] 4673번. 셀프 넘버 (0) | 2021.08.01 |
[백준/JAVA] 1546번. 평균 (0) | 2021.07.31 |
[백준/JAVA] 2577번. 숫자의 개수 (0) | 2021.07.28 |
댓글