오늘의 백준

암영·2022년 5월 18일
0

오늘의 알고리즘

목록 보기
19/37

10818번:최소, 최대

1.파이썬 버전 풀기
2.c언어 정렬로 풀수 있는 방법 생각해보기

문제

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

정답

1차원 배열이라는 큰 주제에 해당하는 내용이였는데
배열을 사용하면 outofbounds가 출력되고
보통 배열을 사용하지 않고 푼 경우가 대다수였다.'
그런데 내가 한 배열이랑 구글링으로 찾은 답안이랑 뭐가 틀린건지 모르겠다...
내가 쓴 코드(틀림)


#include <stdio.h>
int main()
{
	int n,min=100000,max=-1000000,num;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &num);
		if (max <num)
			max = num;
		if (min > num)
			min = num;

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

구글링으로 찾은 답안

#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);

	int min = 1000000;
	int max = -1000000;
	int input;

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

	return 0;
}

구글링으로 찾은 답2_1차원 배열이용

#include<stdio.h>
int main() {
    int a, i, top, bottom;
    scanf("%d", &a);
    int b[a];//c99버전에서는 길이정보를 변수로 선언가능
    for (i = 0; i < a; i++) {
        scanf("%d", &b[i]);
        
        if (i==0) {
            top = b[i];
            bottom = b[i];
        }
        if (top < b[i])
            top = b[i];
        if (bottom > b[i])
            bottom = b[i];
    }
    printf("%d %d", bottom, top);
}```
profile
just do! -얼레벌레 굴러가는 공대생

0개의 댓글