N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
#include<stdio.h>
#include<limits.h>
int main() {
int N;
scanf("%d", &N);
int max_value = INT_MIN;
int min_value = INT_MAX;
for (int i = 0; i < N; i++) {
int value;
scanf("%d", &value);
if (max_value < value) {
max_value = value;
}
if (min_value > value) {
min_value = value;
}
}
printf("%d %d\n", min_value,max_value);
return 0;
}
정수형 최댓값과 최솟값이 정의되어 있는 헤더파일을 작성한다. -> 왤까..?ㅎ
(아시는 분.. help...)
for문을 사용하여 먼저 입력받은 정수의 개수만큼 수를 입력받게 만들어준다.
for문 안에는 입력 받을 수를 넣어줄 자리인 value를 int로 지정해준 뒤, scanf를 사용하여 수를 입력받고 value로 넣어준다.
그 다음 if문을 사용하여 최댓값과 최솟값을 구하여준다.
먼저, for문을 들어오기 전에
int max_value = INT_MIN;
int min_value = INT_MAX;
로 수를 지정해주었다.
이를 보면 max_value에는 int 자료형의 최솟값이 들어가있고, min_value에는 int 자료형의 최댓값이 들어가있다.
따라서 if문으로 max_value < value를 적어 입력받은 value의 값이 더 크면 max_value=value로 입력받은 value의 값을 max_value에 넣어준다.
이와 같이 최솟값을 찾는 과정에도 if(min_value>value){min_value=value;}를 적어 min값과 입력받은 수를 비교하여 value의 값이 더 작으면 min자리에 넣어준다.
(기본지식이 없으니 설명이 어렵다... 내가 사용하는 단어나 표현이 맞는지 모르겠음;;
예를 들어 설명해보자)
예)
3
10 20 5
를 입력 받았다고 가정해보자.
3개의 수를 입력받고 그 수는 10, 20, 5인 것이다.
for문으로 넘어가
i=0
value=10
if (max_value < value) -> max_value에는 int자료형의 최솟값이 들어가 있으므로 value(10)이 더 크다.
{ max_value = value; } -> max_value는 10이 되었다.
if (min_value > value) -> min_value는 int자료형의 최댓값이 들어가 있으므로 value(10)이 더 작다.
{ min_value = value; } -> min_value는 10이 되었다.
i=1
value=20
if (max_value < value) -> max_value(10)보다 value(20) 값이 더 크다.
{ max_value = value; } -> max_value는 20이 되었다.
if (min_value > value) -> min_value(10)은 value(20)보다 작아 if문이 성립되지 않으므로 min_value는 바뀌지 않고 그대로 10을 유지한다.
{ min_value = value; } -> x
i=2
value=5
if (max_value < value) -> max_value(20)는 value(5)보다 값이 크므로 if문이 성립되지 않고 max_value(20) 값은 바뀌지 않는다.
{ max_value = value; } -> x
if (min_value > value) -> min_value(10)보다 value(5) 값이 작으므로 if문이 성립되어 min_value 값이 바뀌게 된다.
{ min_value = value; } -> min_value(5)
따라서
printf("%d %d\n", min_value,max_value);
로 출력하게 되면
5 20
으로 알맞은 최솟값과 최댓값이 출력되게 된다.
코드를 한줄씩 실행시켜 돌아가는 순서와 원리를 조금이나마 알게 되었다.
코드 한줄씩 실행시키는 단축키 = F11 (비쥬얼 스튜디오)