백준 10818번은 정수 여러개 중에서, 최솟값과 최댓값을 구하는 문제이다.
나는 최댓값 최솟값 문제를 풀 땐, 항상 이 값들을 저장하는 변수에 각각 적당한 작은 수, 큰 수를 넣고 푼다. 이 문제에서는 정수의 범위가 주어졌기 때문에 이에 맞게 초기화 숫자를 정했다.
또한, 항상 숫자의 개수가 달라지기 때문에 malloc을 이용하여 동적배열을 할당해주었다. 그 이후 숫자를 입력받고, 최댓값 최솟값을 구해낸 후에, 동적배열을 free 명령어를 이용해서 해제해주면 된다.
코드는 다음과 같다:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int num;
scanf("%d", &num);
int* array = (int*)malloc(sizeof(int) * num);
for (int i = 0; i < num; i++) {
scanf("%d", &array[i]);
}
int max = -1000000; int min = 1000000;
for (int i = 0; i < num; i++) {
if (max < array[i]) {
max = array[i];
}
if (min > array[i]) {
min = array[i];
}
}
printf("%d %d", min, max);
free(array);
return 0;
}