문제 : 최댓값(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])'(구) solved ac class 문제들 > class 1' 카테고리의 다른 글
| [class 1]백준 ACM 호텔(10250번) 풀이 (C++/Python) (0) | 2026.04.19 |
|---|---|
| [class 1]백준 알람 시계(2884번) 풀이 (C++/Python) (0) | 2026.04.18 |
| [class 1]백준 A + B - C(31403번) 풀이 (C++/Python) (0) | 2026.04.16 |
| [class 1]백준 숫자의 합(11720번) 풀이 (C++/Python) (0) | 2026.04.16 |
| [class 1]백준 별 찍기 - 2(2439번) 풀이 (C++/Python) (0) | 2026.04.15 |