[백준 | 파이썬] 10818 : 최대, 최소

devheyrin·2022년 1월 3일
0

codingtest

목록 보기
2/65

문제

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

입력

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

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

Solution 1: 입력값 n 활용

n = int(input())
nums = list(map(int, input().split()))
max_num = nums[0]
min_num = nums[0]
for i in range(0, n):
    if int(nums[i]) > max_num:
        max_num = nums[i]
    if int(nums[i]) < min_num:
        min_num = nums[i]
print(min_num, max_num)

⚠️  주의 포인트

입력값 n을 활용해 0부터 n-1까지 for문을 돌린다.

인덱스를 사용해 리스트를 조회한다.

Solution 2: 입력값 n 활용 ✘

n = int(input())
nums = list(map(int, input().split()))
max_num = num[0]
min_num = num[0]
for i in nums:
    if i > max_num:
        max_num = i
    elif i < min_num:
        min_num = i
print(min_num, max_num)

⚠️  주의 포인트

입력값 n을 사용하지 않고, 리스트 안의 요소를 직접 조회한다.

의문

백준 문제를 풀다 보니 종종 n을 첫째 줄에 입력받고, n개의 정수를 둘째줄에 입력받는다는 조건이 제시되는 경우가 있다. 이럴 때 n개라는 조건을 코드 작성 시 꼭 포함시켜야 하는 걸까? 채점에는 딱히 영향을 주는 것 같지는 않고, 이번 문제의 경우 Solution2가 더 빨랐다는 차이점은 있었다.

+어떤 방법으로 풀어도 채점이 너무 느리다.. 내문제인가백준문제인가 ㅠ

profile
개발자 헤이린

0개의 댓글