본문 바로가기

코딩/백준 BOJ

[백준/C언어] 2562번 - 최댓값

백준 웹사이트 "2562번 - 최댓값" 문제풀이입니다.

언어는 C언어입니다. (제출 언어: C99)

 


문제

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net


소스 코드

#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번 - 최소, 최대" 문제풀이 링크입니다.

 

[백준/C언어] 10818번 - 최소, 최대

백준 웹사이트 "10818번 - 최소, 최대" 문제풀이입니다. 언어는 C언어입니다. (제출 언어: C99) 문제 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의

loding.tistory.com

 

반응형