백준 웹사이트 "2562번 - 최댓값" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int arr[9];
for(int i=0; i<9; i++){
scanf("%d", &arr[i]);
}
int max = arr[0];
int position = 1;
for(int j=0; j<9; j++){
if(arr[j] > max){
max = arr[j];
position = j+1;
}
}
printf("%d\n", max);
printf("%d\n", position);
}
문제 풀이
주어진 9개의 숫자들 중 최댓값과 그 최댓값이 몇 번째 숫자인지 구하는 문제입니다. 10818번 문제는 입력되는 수가 정해져있지 않고 최소, 최대를 모두 구하는 문제이기에 어쩌면 이번 문제가 더 쉬운 문제일지도 모릅니다. 소스 코드는 위와 같으며, 이전 문제와 유사합니다.
한 가지 차이점은 최댓값이 몇 번째 수인지 구해야 한다는 것인데, 이에 해당하는 것이 Line 11의 'position' 변수입니다. Line 12~17의 for문은 첫 번째 숫자부터 마지막 숫자까지 차례로 비교하며, 최댓값이 업데이트 될 때 position도 같이 업데이트 됩니다. 이때 유의할 것은 position=j+1
로 설정하는 것인데, 1차원 배열은 0부터 시작하는 반면, 우리가 흔히 '몇 번째 숫자'를 가리킬 때는 1부터 시작하기에 j가 아닌 j+1로 설정합니다. 예시로, 3, 29, 38, 12, 57, 74, 40, 85, 61와 같은 수열에서도 최댓값 85는 arr[7]이지만 8번째 수가 됩니다!
아래는 백준 웹사이트 "10818번 - 최소, 최대" 문제풀이 링크입니다.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 3052번 - 나머지 (0) | 2022.01.01 |
---|---|
[백준/C언어] 2577번 - 숫자의 개수 (0) | 2021.12.31 |
[백준/C언어] 10818번 - 최소, 최대 (3) | 2021.12.30 |
[백준/C언어] 1110번 - 더하기 사이클 (0) | 2021.12.29 |
[백준/C언어] 10951번 - A+B - 4 (0) | 2021.12.29 |