본문 바로가기
프로그래밍/C언어

[C언어] # 8. 배열 기초 응용 문제 (최대값 & 최소값 구하는 프로그램) : 백준 10818번 C언어

by Crush on Study 2022. 2. 22.
반응형

10818번: 최소, 최대 (acmicpc.net)

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

주어진 문제는 이렇습니다. 입력받을 정수의 개수를 먼저 선언한 뒤, 정수들을 입력했을 때  최소, 최대값만 나오게 하는 것입니다. 일단 문제를 딱 읽었을 때, 배열과 조건문. 그리고 기준이 될 최대&최소 변수의 선언이 필요해보입니다.

#include <stdio.h>

int main()
{
	int i,count;
    int max = -1000000;
    int min = 1000000;
	scanf("%d",&count);
	
	int num[count];
	for (i=0; i<count; i++)
	{
		scanf("%d",&num[i]);
	}
	
	return 0;
}

따라서 기본적인 틀은 이렇게 잡을 수 있겠습니다. 배열의 크기를 입력받았고 (=입력받을 정수의 개수) 각 배열안에

넣을 정수들을 for문으로 입력받았습니다.

 

중요한건 최대,최소값의 기준입니다. 

 

max를 가장 낮은 값, min을 가장 높은 값으로 했습니다. 따라서, if문에서 처음에는 무조건 num[0]이  max가 되고 min이 됩니다. 제가 입력한 숫자 25,32,46,8,3을 보면

num[0] = 25
num[1] = 32
num[2] = 46
num[3] = 8
num[4] = 3

입니다. 즉, num[0]은 max=min=25가 되었습니다.

이제 if (num[i]>max)부터 볼게요.  num[1]>25라면  max=num[1]이 됩니다. num[1]은 32이므로  max= 32가 되었고

if (num[i]<min)은  32<25는 성립하지 않으므로 min = 25입니다. 이걸 5번째 인덱스까지 반복할 경우

 

max는 46, min은 3이 됩니다. 하나하나 파헤쳐보면 의외로 어렵지 않습니다.

우리가 기억할 것은 프로그래밍에서 알고리즘과 여러 문법들은 그저 사고력을 현실화시키기 위한 도구일뿐. 수학적 사고력이 가장 중요하므로 한 문제를 두고 끊임없이 고민하도록 합시다.

반응형