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를 먼저 읽고 반복