Giken Dev
article thumbnail
반응형

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

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

www.acmicpc.net

문제

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

입력

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

출력

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int num;
	int tmp;
	int max = -1000000;		//max와 min을 최대,최소값으로 바로 교체하기 위해 극한값으로 초기화한다.
	int min = 1000000;

	scanf("%d", &num);
	for (int i = 0; i < num; i++) {
		scanf("%d", &tmp);
		if (tmp > max) {
			max = tmp;
		}
		if (tmp < min) {
			min = tmp;
		}
	}
	printf("%d %d", min, max);
}

정수의 범위가 +-포함하여  2,000,000개까지 넓기 때문에, 배열로는 해결이 불가능합니다. (stack overflow가 발생)

그렇기 때문에,

max를 입력되는 정수 범위의 최솟값으로 (범위의 최댓값으로 착각하기 쉬움)

min을 입력되는 정수 범위의 최댓값으로 (범위의 최솟값으로 착각하기 쉬움)

초기화 하고, 입력받는 즉시 대소관계를 파악하여 max와 min을 교체해주었습니다.

 

다음 문제를 풀러 가보겠습니다.

 

반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!