BAEKJOON/단계별로 풀어보기

[BOJ] 10818 : 최소, 최대

말하는 알감자 2022. 7. 25. 16:53

🔒 문제

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