CodingTest/BeakJoon
[2562] 최댓값
the.Dev.Cat
2026. 3. 10. 13:00
최댓값
백준 Bronze II | 2562 | Python | 문제 링크
문제 설명
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
입출력 예
| 입력 | 출력 |
|---|---|
| 3 29 38 12 57 74 40 85 61 |
85 8 |
나의 풀이
import sys
nums = []
for line in sys.stdin:
nums.append(int(line))
max_val = max(nums)
print(max_val)
print(nums.index(max_val) + 1)
입출력 원리
이 문제에서 가장 까다로운 점은 숫자가 한 줄에 하나씩, 총 9줄에 걸쳐 입력된다는 것이다.
input = sys.stdin.readline으로 재정의한 후, for line in sys.stdin으로 나머지 stdin을 한 줄씩 순회한다. sys.stdin은 파일 객체처럼 동작하기 때문에 for 루프로 EOF까지 한 줄씩 읽을 수 있다.
stdin 버퍼
├── (이미 readline으로 소비된 줄 없음 - n을 먼저 읽는 구조가 아님)
├── "3\n" → nums[0] = 3
├── "29\n" → nums[1] = 29
├── ...
└── "61\n" → nums[8] = 61 ← EOF
nums.index(max_val) + 1에서 +1을 하는 이유는 index()가 0부터 시작하는 인덱스를 반환하지만, 문제에서는 1번째부터 세기 때문이다.
입출력 연습 추천 문제
| 문제 | 핵심 입출력 패턴 |
|---|---|
| 15552 빠른 A+B | sys.stdin.readline 기본 사용법 |
| 10951 A+B - 4 | EOF까지 반복 입력 (for line in sys.stdin) |
| 10952 A+B - 5 | 특정 종료 조건(0 0)까지 반복 입력 |
| 11021 A+B - 7 | 테스트 케이스 수 T를 먼저 읽고 반복 |