본문 바로가기
Develop/알고리즘

[백준/C++] Silver III #15353 큰 수 A+B (2)

by favorcat 2023. 1. 25.
반응형
 

15353번: 큰 수 A+B (2)

C++17, C11, C99, C++98, C++11, C++14, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang)

www.acmicpc.net

문제

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

입력

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

출력

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

풀이

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    string a, b;
    string ans = "";
    int tmp = 0;

    cin >> a >> b;
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    while(a.size() < b.size()) a += '0';
    while(b.size() < a.size()) b += '0';
    for(int i=0; i<a.size(); i++){
        int n = (a[i] - '0' + b[i] - '0' + tmp)%10;
        ans += to_string(n);
        tmp = (a[i] - '0' + b[i] - '0' + tmp)/10;
    }
    if (tmp != 0) ans += to_string(tmp);
    reverse(ans.begin(), ans.end());
    cout << ans << endl;
}

두 정수 A, B를 더해 출력
이 문제는 언어 제한이 C언어로 되어 있다
큰 수를 계산하기 위해서는 한 자리씩 더해서 계산해 주어야 한다.
계산하기 위해 A, B는 reverse를 해준다.
한 자리씩 더해주는데 10이 넘어가면, 이를 tmp에 저장해 두었다가 다음 계산에 더해서 계산해 준다.
계산한 값을 ans에 담아둔 다음, 마지막에 reverse를 하여 원래로 돌린다.

반응형

Comment