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