(구) solved ac class 문제들/class 1

[class 1]백준 최댓값(2562번) 풀이 (C++/Python)

isekaipudding 2026. 4. 17. 11:01

문제 : 최댓값(2562번)(Bronze III)

문제 링크 : https://www.acmicpc.net/problem/2562
출처 : Baekjoon Online Judge

 

 

이 문제는 1-based index 문제이며 9개의 자연수가 주어질 때 최대값이 얼마이고 몇 번째 수인지 알아야 합니다.

우선 간단하게 5개의 자연수가 있다고 가정하겠습니다.

  a[0] a[1] a[2] a[3] a[4]
index(1-based) 1 2 3 4 5
value 15 10 25 5 20

우선 최종 결과값(value)를 0, 최대값의 서수를 index라고 가정합니다.

이 때 총 5번의 루프를 돌게 되며 각각 다음과 같은 연산을 하게 됩니다.

1번째 루프 : 15 > 0이 참이므로 value는 a[0]으로 갱신되고 index는 1로 갱신됩니다.

2번째 루프 : 10 > 15이 거짓이므로 갱신되지 않습니다.

3번째 루프 : 25 > 15이 참이므로 value는 a[2]으로 갱신되고 index는 3으로 갱신됩니다.

4번째 루프 : 5 > 25이 거짓이므로 갱신되지 않습니다.

5번째 루프 : 20 > 25이 거짓이므로 갱신되지 않습니다.

이렇게 하여 최종 결과값은 25가 되고 3번째 수라는 것을 알게 됩니다.

 

이건 5개 자연수를 예시로 들었으나 사실 9개 자연수로 해도 논리는 동일합니다.

아래는 해당 알고리즘을 C++로 구현한 것입니다.

#include <bits/stdc++.h>
 
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int a[9];

    for(int i = 0; i < 9; i++) cin >> a[i];

    int index = 0;
    int value = 0; // 주어진 수가 자연수이므로 1보다 더 작은 정수 0으로 설정

    for(int i = 0; i < 9; i++) {
        if(a[i] > value) {
            value = a[i];
            index = i + 1;
        }
    }

    cout << value << '\n' << index;

    return 0;
}

 

Python에서는 2가지 방법으로 구할 수 있습니다.

1번째는 위의 C++의 로직을 그대로 따라해서 구현하는 방법이고 2번째는 정렬을 이용하여 더 간단하게 해결하는 방법도 있습니다.

[1번째 방법]

import sys

input = sys.stdin.readline

L:list = [0 for _ in range(9)]

for i in range(9) :
    L[i] = int(input().rstrip())
    
index:int = 0
value:int = 0

for i in range(9) :
    if L[i] > value :
        value = L[i]
        index = i + 1
        
print(value)
print(index)

[2번째 방법]

import sys

input = sys.stdin.readline

L:list = []

for i in range(9) :
    N:int = int(input().rstrip())
    L.append((N, i+1))
    
L.sort(key=lambda x: x[0], reverse=True)

print(L[0][0])
print(L[0][1])