반응형
문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
알고리즘 분류
5년전의 나는 이런 쉬운 문제도 틀렸었구나 혹은, 문제에서 제공하는 자료형의 범위가 틀리지 않았을까 고민해보면서
틀렸던 문제를 봐보았다.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int a[9];
for(int i = 0 ; i < 9 ; i++){
scanf("%d",&a[i]);
}
int q = 0;
int max = a[0];
for(int i = 1 ; i < 9 ; i++){
if(max < a[i])
{
q = i;
max = a[i];
}
}
printf("%d\n%d",max,q);
}
아래는 정답 코드를 공개하겠다.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int a[9];
for(int i = 0 ; i < 9 ; i++){
scanf("%d",&a[i]);
}
int q = 1;
int max = a[0];
for(int i = 1 ; i < 9 ; i++){
if(max < a[i])
{
q = i+1;
max = a[i];
}
}
printf("%d\n%d",max,q);
}
하지만 단순히 틀린 것이었으며, 자연수와 몇번째 수를 출력하는 묻는 문제였기 때문에
계산되는 결과 값이 + 1 을 해줬어야 하는 사실을 뒤늦게 깨달은 것 같다.
아이고 민망해라... 뭔가 이 문제는 지금 처음 봐서 풀었더라면 똑같은 실수를 했을 것 같다.
문제가 쉽다면 방심하지 말고 어디선가 함정을 배치했을 가능성이 있으니
코딩 테스트를 준비하시는 분들은 꼭 그 함정을 발견할 수 있도록 많은 문제를 풀어보시는 것을 추천드립니다.
이상 다이어릿 이었습니다! 감사합니다.
반응형