2 분 소요


단계 제목 설명  
4 1차원 배열 1차원 배열  
  소단계 문제번호 제목
  3 10818 최소, 최대
    최솟값과 최댓값을 찾는 문제  

문제

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

입력

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

출력

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

내 제출

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

min_N = N_list[0]
max_N = N_list[0]


for i in range(len(N_list)):

    if min_N > N_list[i]:
        min_N = N_list[i]
    if max_N < N_list[i]:
        max_N = N_list[i]

print(min_N,max_N)
N = int(input())
N_list = list(map(int, input().split()))
print(min(N_list), max(N_list))

결과

정답

수정 제출


결과

정답

오답 이유


사용된 코드 이론


1. max( )

max(iterable) 괄호( ) 안에 리스트, 문자 열등 반복 가능한 자료형을 넣으면 가장 큰 값을 반환해준다.

>>> max(-5, 0, 3)
3

>>> max(-5, 3, 0, 3, -5)
3

2. min( )

min(iterable)  괄호( ) 안에 리스트, 문자 열등 반복 가능한 자료형을 넣으면 가장 작은 값을 반환해준다.

>>> min(-5, 0, 3)
-5

>>> min(-5, 3, 0, 3, -5)
-5

3. Parameter

min, max 모두 key, default 매개변수를 갖고 있다.

key

함수를 값으로 넣는다. lambda를 이용할 수 있다. key= function을 기준으로 최대, 최솟값을 찾는다.

절댓값을 찾는 함수 abs를 key값으로 넣을 때

>>> min(-5, 3, 0, 3, -5, key=abs)
0

>>> nums = [-5, 3, 0, 3, -5]
>>> max(nums, key=abs)
-5

나머지를 구하는 lambda 식을 key 값으로 넣을 때

>>> nums = [-5, 3, 0, 3, -5]
>>> min(nums, key= lambda x : x%3 )
3

>>> max(-5, 3, 0, 3, -5, key= lambda x : x%3 )
-5

default

iterable 객체가 비어있는 경우 반환할 값을 지정한다. 

default를 지정하지 않고 iterable이 빈 경우는 ValueError가 발생한다.

>>> bin = []
>>> max(bin, default=10)
10

>>> max(bin)
ValueError: max() arg is an empty sequence

4. dictionary 자료형

max, min 

max 함수로 예를 든다. min 함수 사용방법도 동일함.

dict자료형을 iterable로 넣으면 key값을 기준으로 최대/최소 값을 찾는다.

>>> max({1:-5, 5:3, 10:0})
10

>>> dict_nums = {1:-5, 5:3, 10:0}
>>> max(dict_nums.keys())
10

value값을 기준으로 최대/최소 값을 찾는 경우

‘dict변수. values( )’ 형태로 사용한다.

>>> dict_nums = {1:-5, 5:3, 10:0}
>>> max(dict_nums.values())
3

value값이 최대/최소인 key값을 출력하려는 경우 max/min 함수의 매개변수 key=function을 이용한다.

lamda 식을 function으로 넣어 사용한 예시

>>> dict_nums = {1:-5, 5:3, 10:0}
>>> max(dict_nums, key= lambda x : dict_nums[x]))

dict변수[key값] 형태로 호출할 때, 대괄호[ ] 안의 key값에 해당하는 value값이 출력되는 점을 이용한 lamda 식이다.



참고문헌

파이썬 최소, 최대값을 찾는 함수min,max / dict min, max 함수 설명과 매개변수 key, default (Python)