[백준 10818 파이썬] 최소, 최대 - 배열, 리스트 (feat. min, max, index, len)
[백준 10818 파이썬] 최소, 최대 - 배열, 리스트 (feat. min, max, index, len)
안녕하세요.
이번에는 주어진 수열에서 최솟값, 최댓값을 찾는 문제입니다. 배열/리스트는 특정 조건을 만족하는 값을 찾거나 갯수를 세는 문제가 많죠? 배열/리스트가 데이터 처리를 위한 기초적인 자료 구조이기 때문에 이런 스킬들은 충분히 연습해 두시는게 좋을 것 같네요!
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
문제 분석
정수의 갯수와 갯수만큼의 정수가 주어지는 점은 '개수 세기' 등 앞의 문제들과 같습니다.
최솟값과 최댓값을 찾는 방법은 (i) min, max 함수를 이용하는 방법과, (ii) 반복문과 조건문을 사용해서 해결하는 방법이 있습니다. 답안을 보면서 살펴보도록 하죠!
답안
먼저 min, max 함수를 이용하는 방법입니다.
메소드가 아닌 함수이기 때문에 리스트 변수명 뒤에 붙여서 작성할 필요는 없고 min(A), max(A) 와 같이 작성해 주시면 됩니다! 간단하죠?
다음은 반복문과 조건문을 이용하는 방법입니다.
코드를 먼저 보고 설명드리도록 하겠습니다.
min, max라는 임의의 변수를 생성해주고, 루프를 돌면서 직전의 min, max값보다 작거나 큰 값이 발견되면 min, max 변수값을 갱신해줍니다. 루프가 처음부터 끝까지 돌아가면 min은 최솟값, max는 최댓값으로 확정되겠죠!
min, max 초기값은 리스트 A의 첫번째 원소 값으로 지정해 줍니다. 루프가 처음부터 끝까지 순차적으로 빠짐없이 진행되어야 하기 때문이죠.
초기값인 첫번째 원소를 A[0]과 같이 지정한걸 볼 수 있죠? 리스트의 원소 번호는 0부터 시작되기 때문에 첫번째 원소 번호는 0입니다. 이 번호를 인덱스 (index)라고 하는데요, 몇번째 원소인지를 나타내는 숫자이며, A[0]과 같이 리스트 변수명 옆에 대괄호 안에 표시해주면 해당 번째 값을 return해 줍니다.
또 한가지 처음 나오는 함수가 있는데요, 바로 range 내부에 len(A) 라고 표시한 부분입니다. len은 length의 줄임말로, 리스트의 길이, 즉 원소의 갯수를 나타냅니다. 입력값에 따라 원소 개수는 항상 변하므로 반복문 range를 입력값의 수와 연동해서 작성해 줘야겠죠. 물론 이번 문제에서는 입력값의 갯수인 N으로 지정해주어도 됩니다. 하지만 N이 지정되지 않는 문제에서는 len 함수가 아주 유용하게 쓰이는 점 참고해주세요!
인덱스 (index), len() 함수 등 생각보다 부차적으로 필요한 개념들이 많이 나왔네요. 간단하게 설명드렸지만 배열/리스트에서 아주 중요하게 활용되기 때문에 꼭 연습해 보시면 좋겠네요. 물론 앞으로도 많이 나올테니 가볍게 알아두셔도 충분합니다.
이만 마치도록 하겠습니다.
읽어주셔서 감사합니다.