-- 예전 기록/BOJ

[ BOJ ] 15353 : 큰 수 A+B (2) ( SILVER 3 ) / C

rejo 2023. 6. 20. 15:07

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.

풀이 과정

문자열을 이용해서 표현 범위를 벗어난 수를 연산할 수 있다. 일의 자리수부터 계산하면서 올림수를 따로 저장하는 일반적인 덧셈 방식을 직접 구현해주면 된다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char a[10005];
char b[10005];
char c[10005];
int plus = 0;

int main(void) {
    scanf("%s %s", a, b);
    int a_idx = strlen(a) - 1;
    int b_idx = strlen(b) - 1;
    int c_size = 0;
    while (!(a_idx < 0 && b_idx < 0 && plus == 0)) {
        int now = 0;
        if (a_idx >= 0)
            now += a[a_idx--] - '0';
        if (b_idx >= 0)
            now += b[b_idx--] - '0';
        plus += now;

        c[c_size++] = (plus % 10) + '0';
        plus /= 10;
    }

    c_size -= 1;
    while (c_size >= 0) {
        printf("%c", c[c_size--]);
    }

    return 0;
}