코딩테스트 : 최댓값

juhee·2025년 7월 9일

코딩테스트

목록 보기
8/15

문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

제한사항

입출력 예

예제 입력 1

3
29
38
12
57
74
40
85
61

예제 출력 1

85
8

문제 유형 분류

  • 배열/리스트 처리
  • 순차 탐색 (시퀀스 순회)
  • 최댓값 및 인덱스 추출

시간 복잡도 + 공간복잡도 추정

  • 시간복잡도: O(9) → 입력된 9개 숫자만 순회
  • 공간복잡도: O(9) → 리스트에 저장

적합한 알고리즘 / 자료구조

  • 리스트(list)
  • max() 함수, index() 함수

필요한 라이브러리

  • 없음 (input(), max(), index()만 사용)

최악의 경우 시뮬레이션

  • 입력이 무작위로 주어져도 최댓값을 찾는 데는 한 번의 순회면 충분함

접근 방법

  1. 9개의 수를 리스트에 저장
  2. max()로 최댓값 찾기
  3. list.index(max_value) + 1로 위치 찾기 (1-based index)
  4. 출력

최종 코드

# 입력 받기
numbers = [int(input()) for _ in range(9)]

# 최댓값 찾기
max_value = max(numbers)

# 위치 찾기 (1부터 시작)
position = numbers.index(max_value) + 1

# 출력
print(max_value)
print(position)

enumerate 사용

# 입력 받기
numbers = [int(input()) for _ in range(9)]

# 초기값 설정
max_value = -1
max_index = -1

# enumerate로 인덱스와 값 동시에 순회
for idx, num in enumerate(numbers):
    if num > max_value:
        max_value = num
        max_index = idx  # 0-based index

# 출력 (문제는 1-based index 요구)
print(max_value)
print(max_index + 1)

조건 검증

  • “서로 다른” 자연수라는 조건이 있지만, 로직상 크게 영향을 미치지 않음 (단, 동일한 최대값이 여러 개일 경우엔 index()가 가장 먼저 나오는 인덱스 반환)

0개의 댓글