Algorithm/C

[백준] 10818번 : 최소,최대 C/C++ 문제풀이 솔루션

Printemp 2021. 10. 28.

문제

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

 

 

 

 

 

 

 

 

 

 

처음에는 N의 범위(1<=N<=1000000)을 이용하여 크기가 백만인 배열을 선언하여 풀이하려고 했었다. 하지만 스택 오버플로우가 발생하여 생각을 바꿔보았다.

주어진 정수들을 배열에 저장하지 않고 앞에서부터 하나씩 비교해 나간다.

min과 max의 값은 문제에서 주어진 정수의 범위를 고려하여 설정했다.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	int k, i, comp, min = 1000000, max = -1000000;
	
	scanf("%d", &k);
	
	for (i = 0; i < k; i++)
	{
		scanf("%d", &comp);
		if (comp < min)
			min = comp;
		if (comp > max)
			max = comp;
	}
	printf("%d %d", min, max);

	return 0;
}

댓글

💲 추천 글