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);
}```