본문 바로가기

백준 알고리즘 풀이

백준 10818

최소, 최대 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 183171 78736 60643 42.738%

문제

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

입력

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

출력

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

예제 입력 1 복사

5
20 10 35 30 7

예제 출력 1 복사

7 35

 

<풀이 - 수정 전>

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define MAX 1000000
int main(void)
{
int arr[MAX] = { 0 };
int N, i;
int max, min;
scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%d", &arr[i]);
min = arr[0];
max = arr[0];
for (i = 1; i < N; i++)
{
if (min > arr[i])
min = arr[i];
if (max < arr[i])
max = arr[i];
}
printf("%d %d", min, max);
return 0;
}

 

<풀이 - 수정 후>

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(void)
{
int N, n, i;
int min = 1000000, max = -1000000;
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d", &n);
if (n > max)
{
max = n;
}
if (n < min)
{
min = n;
}
}
printf("%d %d", min, max);
return 0;
}

 

<주의할 점>

배열을 사용하는 문제라고 해서 배열을 사용했더니 크기가 1,000,000인 배열은 스택사이즈 초과로 인해 오류를 일으켰고, 이래저래 문제가 많아서 그냥 배열을 사용하지 않는 문제로 만들어 보았다.

'백준 알고리즘 풀이' 카테고리의 다른 글

백준 11654  (0) 2022.01.23
백준 4673  (0) 2022.01.23
백준 10952  (0) 2022.01.22
백준 2739  (0) 2022.01.22
백준 1330  (0) 2022.01.22