Language/C
[C/백준 10818] 최소, 최대
y_MIN
2021. 3. 17. 15:40
문제: N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력: 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력: 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
#include <stdio.h>
int main(void) {
int n, max = -1000000, min = 1000000, num = 0;
scanf_s("%d", &n);
for (int i = 0;i < n;i++) {
scanf_s("%d", &num);
if (max <= num)
max = num;
if (min >= num)
min = num;
}
printf("%d %d", min, max);
return 0;
}
[틀린 코드]
// 틀린 코드
#include <stdio.h>
int main(void) {
int n, max = 0, min = 0;
scanf_s("%d", &n);
int arr[n];
for (int i = 0;i < n;i++) {
scanf_s("%d", arr[n]);
if (max <= arr[n])
max = arr[n];
if (min >= arr[n])
min = arr[n];
}
printf("%d %d", min, max);
return 0;
}
1. 배열 문제라서 배열의 크기를 입력 받아 int arr[n]; 으로 초기화 하려고 했는데 그 줄에서 오류가 났다. 변수 n 값을 상수로 사용할 수 없다고 .. 그래서 n의 최댓값이 1,000,000이니까 int arr[1000001]; 으로 적었는데 찾아보니 스택 영역에서 제한을 받아서 안됐다. 그래서 배열 사용 포기 !
2. 문제의 조건 때문에 max와 min을 0으로 초기화 하면 안되고 max=-1000000, min=1000000으로 초기화해야 했다.