본문 바로가기

Univ/Python Programming

[문제 07] 배열에서 최대값과 최소값 찾기 - Python 풀이

주어진 정수 배열에서 최대값과 최소값을 찾아 출력하는 프로그램을 작성한다. 배열의 크기는 0 이상 100 이하이다.

입력 예시

첫째 줄에 배열의 크기 N이 주어진다. 둘째 줄에 N개의 정수가 공백으로 구분되어 주어진다.

출력 예시

최대값과 최소값을 각각 "Maximum: 값", "Minimum: 값" 형식으로 출력한다.

예제 테스트케이스

예제 1

입력 예시
출력 예시
5
1 2 3 4 5
Maximum: 5
Minimum: 1

예제 2

입력 예시
출력 예시
1
7
Maximum: 7
Minimum: 7

✔ 코드

N = int(input())

if N > 0:
    arr = list(map(int, input().split()))
    print(f"Maximum: {max(arr)}")
    print(f"Minimum: {min(arr)}")

1. 문법 요소 설명

1.1 입력 처리: input() 및 형변환

N = int(input())
  • input() 함수는 표준 입력으로부터 문자열을 읽어 반환한다.
  • 반환값은 문자열이므로, 정수 연산을 위해 int()를 사용하여 정수형으로 변환한다.

1.2 조건문: if

if N > 0:
  • 조건식이 참일 경우에만 코드 블록이 실행된다.
  • 본 문제에서는 배열이 존재하는 경우에만 입력 및 연산을 수행하기 위한 제어 구조이다.

1.3 문자열 분할: split()

input().split()
  • 입력된 문자열을 공백 기준으로 분리하여 문자열 리스트로 반환한다.
  • 예: "1 2 3" → ["1", "2", "3"]

1.4 함수 적용: map()

map(int, input().split())
  • iterable의 각 요소에 대해 int 함수를 적용한다.
  • 문자열을 정수로 변환하는 데 사용된다.

1.5 리스트 생성: list()

arr = list(map(int, input().split()))
  • map 객체를 리스트로 변환하여 실제 데이터 구조로 저장한다.
  • 결과적으로 정수형 리스트가 생성된다.

1.6 최댓값 및 최솟값: max(), min()

max(arr)
min(arr)
  • 리스트 내 모든 요소를 순차적으로 비교하여 최대값과 최소값을 반환한다.
  • 시간 복잡도는 O(N)이다.

1.7 출력: print() 및 f-string

print(f"Maximum: {max(arr)}")
  • f-string을 사용하여 문자열 내에 값을 삽입한다.
  • {} 내부의 표현식이 평가되어 문자열로 출력된다.

다음은 요청한 내용을 이모지 없이 정리한 것이다.


코드

N = int(input())

if N > 0:
    arr = list(map(int, input().split()))
    print(f"Maximum: {max(arr)}")
    print(f"Minimum: {min(arr)}")

 


2. 주의 포인트

2.1 N = 0인데 배열 입력 받는 경우

arr = list(map(int, input().split()))
  • N=0이면 입력 줄이 존재하지 않는다.
    → EOFError 발생

해결

if N > 0:

 


2.2 split() 괄호 빠뜨림

input().split   # 잘못된 형태
input().split() # 올바른 형태
  • 함수가 실행되지 않아 오류가 발생한다.

2.3 출력 형식 오타

MAximum
Minmum
  • 채점은 문자열을 완전히 일치시켜 비교한다.
    → 한 글자라도 다르면 오답

✔ 핵심 요약

  • input() → 문자열 입력
  • int() → 정수 변환
  • split() → 문자열 분리
  • map() → 요소 변환
  • list() → 리스트 생성
  • max/min → 값 계산
  • print() → 출력