728x90
https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
문제 분석
정렬의 문제로 보여진다. 하지만 정렬로 푸는 방법과 배열을 한 번 돌면서 최소와 최대를 골라내는 방법의 시간 차이가 조금 있었기 때문에 최소와 최대를 각각 구하는 방법으로 풀었다.
코드 진행 방향
n개의 배열을 생성한 뒤 배열을 차례로 입력받고 첫 번째로 입력받은 배열의 수를 max, min에 넣어준다.
그 후 배열의 수가 max보다 크면 max를 바꾸어주고 min보다 작으면 min을 바꾸어주며 배열의 수만큼 반복한다.
코드
첫 번째 방법 - min, max 바꾸어가며 구하기
더보기
#include <stdio.h>
int main(){
int n, max, min;
scanf("%d", &n);
int arr[num];
for(int i=0; i<n; i++){
scanf("%d", &arr[i]);
}
max = arr[0];
min = arr[0];
for(int j=0; j<n; j++){
if(max < arr[j])
max = arr[j];
else if(min > arr[j])
min = arr[j];
}
printf("%d %d", min, max);
}
두 번째 방법 - 정렬 후 첫 번째와 마지막 배열의 수 뽑기
더보기
#include <stdio.h>
#include <stdlib.h>
int compare(const void* a, const void* b){
return *(int *)a>*(int *)b?1:(*(int *)a<*(int *)b?-1:0);
}
int main(){
int num;
scanf("%d", &num);
int arr[num];
for(int i=0; i<num; i++){
scanf("%d", &arr[i]);
}
qsort(arr, num, sizeof(int), compare);
printf("%d %d", arr[0], arr[num-1]);
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/C] 14264번: 정육각형과 삼각형 (0) | 2022.06.21 |
---|---|
[백준/C] 2577번: 숫자의 개수 (0) | 2022.06.20 |
[백준/C] 11021번: A+B - 7 (0) | 2022.06.20 |
[백준/C] 1110번: 더하기 사이클 (0) | 2022.06.20 |
[백준/C] 10952번: A+B - 5 (0) | 2022.06.20 |