멋쟁이 개발자의 블로그
[C/백준 10818] 최소, 최대 본문
문제: 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으로 초기화해야 했다.
'Language > C' 카테고리의 다른 글
[C/백준 2562] 최댓값 (0) | 2021.03.18 |
---|---|
[C/백준 1110] 더하기 사이클 (0) | 2021.03.16 |
[C/백준] 10871번 - X보다 작은 수 (1) | 2020.07.19 |
[쉽게 풀어쓴 C언어 Express] 5장 수식과 연산자 Programming 문제 (0) | 2020.07.17 |
[쉽게 풀어쓴 C언어 Express] 4장 변수와 자료형 Programming 문제 (0) | 2020.07.10 |