본문 바로가기

BAEK JOON ㅡ C

[BAEK JOON/C] 10818 ㅡ 최소, 최대



백준 알고리즘 문제 10818 ㅡ 최소, 최대

문제

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

입력

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

출력

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

 

 

 


코드

#include <stdio.h>

// 배열 미사용
int main(void) {
	int i, n, num;
	int max=-1000000, min=1000000;
	scanf("%d", &n);
	for (i = 0; i < n; i++) {
		scanf("%d", &num);
		if (num > max)
			max = num;
		if (num < min)
			min = num;
	}
	printf("%d %d", min, max);
	return 0;
}

 

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

// 배열 사용
int main(void) {
	int i, n;
	int max = INT_MIN, min = INT_MAX;
	
	scanf("%d", &n);
	int* arr = (int*)malloc(sizeof(int) * n);

	for (i = 0; i < n; i++)
		scanf("%d", &arr[i]);

	for (i = 0; i < n; i++) {
		if (arr[i] > max)
			max = arr[i];
		if (arr[i] < min)
			min = arr[i];
	}

	printf("%d %d", min, max);
    return 0;
}

 

메모

INT_MAX, INT_MIN을 사용하면 정수형 범위에서의 최소값과 최대값을 지정할 수 있다! (헤더파일은 limits.h)
정수 N의 최대개수인 1,000,000을 배열의 길이값으로 주니 오버플로우가 발생해서 동적할당을 이용했다.




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

 

10818번: 최소, 최대

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

www.acmicpc.net