코딩/백준

[백준][C] 10818. 최소, 최대

rivermoon 2022. 10. 2. 14:50

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

n개의 정수가 주어질 때, 최댓값과 최솟값을 출력하는 문제입니다.

 

예제 입력

5
20 10 35 30 7

예제 출력

7 35

해결 방법

n개의 숫자를 저장할 배열을 만들었습니다. 문제에서 주어지는 정수의 개수는 최대 1,000,000개이기에, 배열의 크기는 그보다 1 더 큰 1,000,001로 지정하였습니다.

 

여러 방법이 있지만, 저는 이 방법을 사용하였습니다.

I. 배열의 첫 번째 요소를 최댓값으로 지정한다.

II. 두 번째부터 배열의 끝까지 반복문을 수행하면서,

첫 번째 요소보다 더 큰 수가 있다면 그 수를 새로운 최댓값으로 지정한다.

 

[3, 5, 4, 7] 배열이 있다고 가정할 때, 첫 번째 요소인 3을 최댓값으로 지정하고 시작한다.

 

-> 5는 3보다 크기 때문에, 5가 새로운 최댓값이 된다.

-> 4는 5보다 크지 않기 때문에, 넘어간다.

-> 7은 5보다 크기 때문에, 7이 새로운 최댓값이 된다.

 

이 방법으로 구할 수 있습니다. 최솟값은 이와 똑같이 하되, 더 작은 수를 새로운 최솟값으로 지정하시면 됩니다.

 

코드

#include <stdio.h>

int main()
{
	int cnt, input, max, min;
	scanf("%d", &cnt);
	int numbers[1000001];
	
	for (int i = 0; i < cnt; i++) {
		scanf("%d", &input);
		numbers[i] = input;
	}
	
	max = min = numbers[0];
	for (int j = 1; j < cnt; j++) {
		if (numbers[j] > max) max = numbers[j];
		if (numbers[j] < min) min = numbers[j];
	}	
	printf("%d %d", min, max);	
}

'코딩 > 백준' 카테고리의 다른 글

[백준][C] 3052. 나머지  (1) 2022.10.02
[백준][C] 2562. 최댓값  (0) 2022.10.02
[백준][C] 1110. 더하기 사이클  (0) 2022.10.02
[백준][C] 10951. A + B - 4  (0) 2022.10.02
[백준][C] 10952. A + B - 5  (0) 2022.10.02