🔒 문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
⌨ 입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
🖨 출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
📚 예제
Ex)
5
20 10 35 30 7
7 35
📌 풀이
- 메모리 동적 할당
malloc = memory allocation (stdlib.h 파일에 선언되어 있다)
malloc 함수로 사용할 메모리 공간을 확보하는데, 이때 필요한 메모리 크기는 바이트로 지정됨
포인터 = malloc(할당할 크기)
자료형의 크기를 모르겠으면 sizeof(자료형)을 하고 만들고 싶은 배열의 인덱스 수 곱하기
포인터 = malloc(sizeof(자료형) * 인덱스 수)
🔑 c언어 코드
#include<stdio.h>
#include<stdlib.h>
int main()
{
int N; // 정수 개수
int min, max; // 최소, 최대
scanf("%d", &N);
int* x; // 1차원 배열
x = malloc(sizeof(x)*N); // 동적 할당
for (int i = 0; i < N; i++)
{
scanf("%d", &x[i]);
}
min = x[0];
max = x[0];
for (int i = 1; i < N; i++)
{
if (x[i] < min) // 최소 구하기
min = x[i];
if (x[i] > max) // 최대 구하기
max = x[i];
}
printf("%d %d", min, max);
free(x); // 동적 메모리 할당 해제
return 0;
}
'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ] 2577번 : 숫자의 개수 (0) | 2022.07.26 |
---|---|
[BOJ] 2562번 : 최댓값 (0) | 2022.07.25 |
[BOJ] 1110번 : 더하기 사이클 (0) | 2022.07.25 |
[BOJ] 10951번 : A+B-4 (0) | 2022.07.25 |
[BOJ] 10952번 : A+B-5 (0) | 2022.07.25 |