✅ 문제 제출
📄 문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
⌨️ 입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
🖥️ 출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
🧪 예제
- 예제 입력
5
20 10 35 30 7
- 예제 출력
7 35
✏️ 문제 풀이
#include <stdio.h>
#include <stdlib.h>
int main() {
int N = 0;
int max = 0, min = 0;
int* arr;
scanf("%d", &N);
arr = (int*)malloc(N * sizeof(int)); // malloc을 이용해 배열을 동적 할당으로 선언
for (int i = 0; i < N; i++) { // 배열에 값을 넣어주는 for문
scanf("%d", &arr[i]);
}
max = arr[0];
min = arr[0];
for (int i = 1; i < N; i++) { // 최대, 최소 값을 구하는 구문
if (max < arr[i])
max = arr[i];
if (min > arr[i])
min = arr[i];
}
free(arr); // 동적할당 후, free 함수를 통해 메모리를 해제 시켜주어야 함. (메모리 누수 방지)
printf("%d %d", min, max);
}
1000,000의 크기를 가진 배열을 선언하는 것보다 동적 할당을 해주는 것이 더욱 메모리 측면에서 효율적이므로,
malloc을 이용한 동적할당 방법을 서치하여 코드를 작성하였다.
계속 동적할당을 해주어서 그런지 채점을 하는 데에 시간이 꽤 소요되었다.
C를 오랜만에 작성해보니 기억이 약간 가물 가물 해졌다. 꾸준히 해야할 듯...
그리고 malloc을 내 마음대로 사용하기 위해 공부를 더 해봐야겠다.
'Programming Language > C' 카테고리의 다른 글
[C언어] 백준 2562번 : 최댓값 (0) | 2023.09.14 |
---|---|
[C언어] 동적 할당 : malloc() (0) | 2023.09.12 |
[C언어] Call By Value & Call By Reference (0) | 2023.06.16 |
C 포인터(Pointer) (1) | 2023.06.07 |
백준 2480번 : 주사위 세개 (0) | 2022.06.23 |