본문 바로가기

코딩/백준 BOJ

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

백준 웹사이트 "10818번 - 최소, 최대" 문제풀이입니다.

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

 


문제

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net


소스 코드

#include <stdio.h>

int main(void){
    int N;
    scanf("%d", &N);
    int arr[N];
    
    for(int i=0; i<N; i++){
        scanf("%d", &arr[i]);
    }

    int min = arr[0], max = arr[0];
    for(int j=0; j<N; j++){
        if(arr[j] < min)
            min = arr[j];
        if(arr[j] > max)
            max = arr[j];
    }

    printf("%d %d", min, max);
}

문제 풀이

  주어진 숫자들 중 최대, 최소를 구하는 문제입니다. 사실 이 문제는 숫자들이 입력되는대로 최대, 최소를 비교하며 저장하면 따로 배열을 만들지 않아도 쉽게 풀 수 있습니다. 그러나 단계별로 풀어보기 5단계 "1차원 배열" 섹션인 만큼, 배열을 만들어 풀어봅시다.

  배열의 선언은 Line 6와 같이 하며, Line 8 ~ 10에 걸쳐 미리 선언한 배열을 초기화합니다. 여기서 '선언'은 배열에 해당하는 공간을 확보하는 것이며, '초기화'는 그렇게 확보한 공간에 숫자들을 채워넣는 것입니다. 초기화하기 전까지 배열 안에는 무의미한 값들이 채워져있으므로, 반드시 초기화를 한 후에 배열을 이용해야 합니다.

  Line 12 ~ 18은 배열에서 최대, 최소를 구하는 코드입니다. 파이썬과 같이 high-level한 언어에서는 min(~) 또는 max(~) 한 줄로 끝날 작업들을 low-level한 C언어에서는 직접 작성해야합니다ㅠㅠ.

반응형