백준/2024scon

백준_31833_온데간데없을뿐더러

S0LL 2024. 5. 15. 19:22

 

 

숫자를 입력받아 모두 붙여서 그대로 쓴 뒤, 크기를 비교하는 문제입니다.

 

이 문제같은 경우, 노트에서도 볼 수 있듯, x와 y의 크기가 매우 클 수 있으므로 long long 타입을 써야 합니다.

 

 

저는 입력을 배열로 받은 뒤, 숫자들을 이어붙이기 위해 10의 거듭제곱을 곱해서 다른 배열에 넣어주었습니다.

 

 

 

코드)

#include <stdio.h>
#include <math.h>
#include <limits.h>

int main(void)
{
    int N = 0;
    scanf("%d", &N);

    long long A[20] = {0};
    long long B[20] = {0};

    long long result_A[20] = {0};
    long long result_B[20] = {0};

    for (int i = 0; i < N; i++)
    {
        scanf("%lld", &A[i]);
    }
    for (int i = 0; i < N; i++)
    {
        scanf("%lld", &B[i]);
    }

    long long k = 1;
    for (int i = N - 1; i >= 0; i--)
    {
        if (A[i + 1] >= 10)
            k *= 10;
        result_A[i] = A[i] * k;
        k *= 10;
    }
    k = 1;
    for (int i = N - 1; i >= 0; i--)
    {
        if (B[i + 1] >= 10)
            k *= 10;
        result_B[i] = B[i] * k;
        k *= 10;
    }
    long long sum_A = 0;
    long long sum_B = 0;
    for (int i = 0; i < N; i++)
    {
        sum_A = sum_A + result_A[i];
        sum_B = sum_B + result_B[i];
    }

    // printf("%lld\n%lld\n", sum_A, sum_B);

    if (sum_A >= sum_B)
    {
        printf("%lld\n", sum_B);
    }
    else
    {
        printf("%lld\n", sum_A);
    }
    return 0;
}

'백준 > 2024scon' 카테고리의 다른 글

백준_31831_과민성대장증후군  (0) 2024.05.14