Coding/BOJ

[BOJ 백준] 2562 - 최댓값 (C / C++)

Dev_Klare 2023. 11. 4. 22:29

문제 바로가기

https://www.acmicpc.net/problem/2562


관련 알고리즘

- 해당 없음


정답 및 해설

9개의 정수를 입력받아 그중 최댓값과 최댓값의 인덱스(몇 번째)를 출력하는 문제이다.

값이 하나 입력될 때마다 기존 최댓값과 비교해서 값과 인덱스를 업데이트하여 간단하게 해결할 수 있다.

C++

더보기
#include<bits/stdc++.h>
using namespace std;
int main(){
    int MAX=0,idx,n;
    for(int i=1;i<10;i++){
        cin>>n;
        if(n>MAX){
            MAX=n;
            idx=i;
        }
    }
    cout<<MAX<<'\n'<<idx;
}

 

Line 해설
4 최댓값을 저장할 변수 MAX, 몇 번째에 있는지 저장할 idx 를 선언했다.
입력받은 자연수끼리의 대소비교에 방해가 되지않도록 MAX를 0으로 초기화했다.1)
5 i 를 1 ~ 9 범위내에서 반복한다. 최댓값이 등장했을 때 '몇 번째에 있는지'를 i 로 파악할 수 있도록 했다.
6~10 cin 함수로 정수를 입력받은 후, if 조건문으로 기존 최댓값(MAX)와 입력받은 자연수(n)의 대소를 비교한다.
n이 더 크다면, MAX는 n을, idx는 i를 대입하여 최댓값과 그 수의 인덱스를 저장한 후 마지막에 출력한다.

1) 값을 초기화할때는 알고리즘 진행에 방해가 되지 않도록 설정해야 한다. 예를 들어 위 문제에서 MAX를 10으로 설정하게 된다면, 입력받을 9개의 자연수 중 10보다 크거나 같은 수가 없는 경우에 MAX는 10, idx는 쓰레기값으로 오답을 출력하게 되니 유의하자.


C

더보기
#include<stdio.h>
int main(){
    int MAX=0,idx,n;
    for(int i=1;i<10;i++){
        scanf("%d",&n);
        if(n>MAX){
            MAX=n;
            idx=i;
        }
    }
    printf("%d\n%d",MAX,idx);
}

 

Line 해설
4 최댓값을 저장할 변수 MAX, 몇 번째에 있는지 저장할 idx 를 선언했다.
입력받은 자연수끼리의 대소비교에 방해가 되지않도록 MAX를 0으로 초기화했다.
5 i 를 1 ~ 9 범위내에서 반복한다. 최댓값이 등장했을 때 '몇 번째에 있는지'를 i 로 파악할 수 있도록 했다.
6~10 scanf 함수로 정수를 입력받은 후, if 조건문으로 기존 최댓값(MAX)와 입력받은 자연수(n)의 대소를 비교한다.
n이 더 크다면, MAX는 n을, idx는 i를 대입하여 최댓값과 그 수의 인덱스를 저장한 후 마지막에 출력한다.

Python

더보기
MAX=0
for i in range(1,10):
    n=int(input())
    if n>MAX:
        MAX=n
        idx=i
print(f'{MAX}\n{idx}')

 

Line 해설
2 i 를 range(1,10) 함수를 사용해 1~9 범위의 값에서 반복하도록 설정한다.
3 input()으로 입력받은 값을 int 함수를 사용해 정수로 변환한다.
4~6 if 조건문으로 기존 최댓값(MAX)와 입력받은 자연수(n)의 대소를 비교한다.
n이 더 크다면, MAX는 n을, idx는 i를 대입하여 최댓값과 그 수의 인덱스를 저장한 후 마지막에 출력한다.
7 파이썬에서 제공하는 f-string 문법을 사용하여 출력하였다.1)

1) f-string 문법은 파이썬 문자열 사이에 변수를 입력할 때 유용하다. 기존 문자열 "STRING"의 따옴표(" or ') 앞에

f를 붙여서 정의하고 문자열 사이에서 변수는 {}로 감싸서 표기한다.

ex] Name="Klare"; print(f"My Name is {Name}")   출력 : My Name is Klare