백준 - C, C++/05. 1차원 배열
[C언어] 백준 10818번 : 최소, 최대
ImJay
2020. 9. 24. 00:01
반응형
백준 10818번 : 최소, 최대
- 사용언어 : C언어
1. 문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
2. 코드
#include <stdio.h>
#include <limits.h>
int main(void) {
int input;
int max=INT_MIN, min=INT_MAX;
scanf("%d", &input);
int num[input];
for(int i=0; i<input; i++) {
scanf("%d ", num+i);
if (num[i] > max) max = num[i];
if (num[i] < min) min = num[i];
}
printf("%d %d", min, max);
}
3. 풀이
먼저 for문에서 입력을 받으면 최댓값과 최솟값의 초기값을 정해줘야 하는데 그 부분이 조금 어려웠습니다.
인터넷을 찾아보니 정수형 변수 범위 안에서 최솟값과 최댓값을 지정 해줄 수 있다는 것을 알 수 있었습니다.
INT_MIN 은 정수형 범위에서 정의되는 최솟값이며, INT_MAX 는 정수형 범위에서 정의되는 최댓값입니다.
그리고 이를 사용해주려면 <limits.h> 헤더파일을 포함해주셔야 합니다.
당연히 처음 입력 받는 정수 num[0]이 최솟값과 최댓값으로 처음 설정되어야 하기에,
int max=INT_MIN, min=INT_MAX; 으로 지정해주었습니다.
또 하나 헷갈렸던 부분은 배열의 크기를 어떻게 지정해주느냐인데,
아쉽게도 C언어에서는 int num[]; 과 같이 편하게 크기를 지정하지 않는 방법은 없는 것 같아요.
동적 할당은 아직 배우지 않았기 때문에 ..
scanf("%d", &input);
int num[input];
이와 같이 num 배열의 크기를 지정하였습니다.
반응형