Stay Hungry Stay Foolish

BOJ 코딩테스트/Bronze

BOJ 10818번 : 최소, 최대 (C언어/Bronze 3)

dev스카이 2022. 5. 12. 03:13

문제

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

 

입력

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

 

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

 

예제 입력 1

5
20 10 35 30 7

예제 출력 1

7 35

문제 설명

첫째 줄의 정수의 개수만큼 입력하고 그 중에서 최소와 최대를 찾는 문제다.

 

문제 풀이

입력 조건에서 모든 정수는 -1,000,000~1,000,000이다. 따라서 최대와 최소를 그에 맞게 초기화해준다. 메모리 낭비를 줄이고자 입력하면서 비교하는 for문을 만든다. 

 

Solution

#include <stdio.h>

int main() {
    int N,num;
    int min=1000000, max=-1000000;
    scanf("%d",&N);
    for(int i=0; i<N; i++){
        scanf("%d",&num);
        if(num < min) min = num;
        if(num > max) max = num;
    }
    printf("%d %d", min, max);
    return 0;
}

- 배열을 이용하려면 for문 전에 int num[N];선언해주고, for문 내의 num을 모두 num[i]로 바꿔주면 된다.

 

Review

연속으로 데이터를 입력받아야 할 때 항상 배열을 먼저 생각하고는 하는데, 메모리 공간을 불필요하게 많이 사용할 수도 있다고 하니 입력값을 받으면서 바로 비교하는 게 좋을 것 같다.