백준(BEAKJOON) | 단계별로 풀어보기
5-2단계 #2562번
2562번: 최댓값
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어
www.acmicpc.net
문제 |
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력 |
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력 |
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
🥕 처음에 배열을 하나 생성하고, for문으로 0부터 N까지 반복하여 9개의 숫자를 입력받았다.
max를 배열의 첫 번째 값(num[0])으로 지정하고 다시 for문으로 최댓값을 찾도록 했다.
주의할 점)
<배열의 첫 번째 값이 최댓값일 때를 고려하여>
1. 최댓값만 출력하는 것이 아니라 몇 번째 수인지도 출력해야 하므로, for문을 1부터가 아니라 0부터 반복해야 한다.
(최댓값을 num[1]로 했다면, 1부터 반복)
2. max < num[i] (x) -> max <= num[i] (o)
이렇게 하지 않으면 배열의 첫 번째 값이 최댓값일 때 if문 조건식에 맞지 않는다.
따라서 출력은 잘 되는 것처럼 보여도 order안에 i 값이 들어가지 않아서 쓰레기 값이 들어있을 수 있다.
-코드 첨부-
C언어
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
int main(void)
{
int max, order;
int num[9];
for(int i=0; i<9; i++){
scanf("%d", &num[i]);
}
max = num[0];
for(int i=0; i<9; i++){
if(max <= num[i]){
max = num[i];
order = i + 1;
}
}
printf("%d\n%d\n", max, order);
return 0;
}
|
cs |
'Coding > Baekjoon(백준)' 카테고리의 다른 글
[C언어] 백준 3052번. 나머지. (0) | 2021.01.20 |
---|---|
[C언어] 백준 2577번. 숫자의 개수. (0) | 2021.01.19 |
[Python, C] 백준 10818번. 최소, 최대. (0) | 2021.01.18 |
[Python, C] 백준 1110번. 더하기 사이클. (1) | 2021.01.12 |
[Python, C] 백준 10952번. A+B - 5. (0) | 2021.01.11 |