[백준][1차원 배열] 10818번 -python

랼류·2023년 11월 29일
1
post-thumbnail

백준 10818번: 최소, 최대

문제


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

입력


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

출력


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

입출력예시


문제풀이

1차원 배열 첫 문제, 10818번: 최소, 최대

배열을 입력받고 배열의 최소, 최대값을 찾아 출력하는 문제이다.
이 문제를 보고 가장 먼저 생각난 두가지는 max, min함수math.inf이다.
먼저 math.inf를 사용해 완성한 코드는 다음과 같다.

  • 작성코드1
import math
N = int(input())
A = map(int, input().split())

max_num = -math.inf #최대값을 찾기 위한 초기 비교값
min_num = math.inf #최소값을 찾기 위한 초기 비교값

for i in A:
    if i <= min_num:
        min_num = i
    if i >= max_num:
        max_num = i

print(min_num, max_num, end = ' ')

min(), max()를 사용한 코드는 다음과 같다.
input().split()이 output을 리스트로 하긴 하지만, 리스트 요소들은 문자열로 반환되기 때문에 int로 맞춰주는 작업이 필요하다.
map을 사용하면 해당 변수를 한 번은 사용할 수 있지만 다시 사용하려 하면 error가 발생한다. 이를 해결해주기 위해 해당 변수를 다시 list에 넣어주었다.

  • 작성코드2
N = int(input())
A = list(map(int, input().split()))
#A = [int(x) for x in input().split()]

print(min(A), max(A), end =' ')

사용 함수1 - math.inf

math.inf

: 양의 무한대 값 출력

  • 사용 방법(형태)
    import math #math 패키지 불러오기
    positive = math.inf
    negative = -math.inf

사용 함수2 - min(), max()

min()

: 입력된 자료형에서 최소값을 찾는 함수

max()

: 입력된 자료형에서 최대값을 찾는 함수
input; Iterable 객체(반복할 수 있는 객체/list, dict, set 등)

  • 사용 방법(형태)
    min('대상 객체')
    max('대상 객체')
  • 활용 예시
a = [1, 3, 5, 6, 8]
min(a) #output; 1
max(a) #output; 8

시행착오

  • 입출력예시에 수열의 수가 양수만 나와서 수열에 음수가 포함된다는 것을 생각하지 못했다. 처음에 max_num = 0으로 설정해 계속 틀렸다.
    여러 번 수정하던 중 혹시 음수도 포함되나? 라는 생각에 문제를 확인했더니 모든 정수는 무려 -1,000,000에서부터 시작된다는 것이다.😧
  • 수열을 map 형태로 받아서 사용할 때, 한 번 사용하니 이후에는 비어있는 변수가 되었다. 왜그럴까 map의 구조에 대해 언제 한 번 자세히 공부해야겠다.

오늘의 교훈

  • 문제, 조건을 정확히 읽자
profile
준비~ 시작!

1개의 댓글

comment-user-thumbnail
2023년 12월 2일

저도.map이.조금.헛갈리는데.저랑.같이.map.공부하면.좋겠어요.아가씨.^^

답글 달기