728x90
반응형
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
string a, b, tmp;
cin >> a >> b;
int num1[10001], num2[10001];
int sum;
vector<int> v;
// 더 긴 문자열을 a로 저장
if(a.size() < b.size()){
tmp = a;
a = b;
b = tmp;
}
for(int i = 0; i < a.size(); i++)
num1[i + 1] = a[i] - '0';
for(int i = 0; i < b.size(); i++)
num2[i + 1 + a.size() - b.size()] = b[i] - '0';
for(int i = a.size(); i > 0; i--){
sum = num1[i] + num2[i];
if(sum >= 10){
num1[i - 1]++;
sum -= 10;
}
v.push_back(sum);
}
// 맨 앞자리 수 출력
if(num1[0] != 0) cout << 1;
for(int i = v.size() - 1; i >= 0; i--){
cout << v[i];
}
}
파이썬은 그냥 a+b로, 자바는 bigInteger을 사용해서 쉽게 풀 수 있지만 C/C++로 구현할 때는 성가신 문제이다.
입력이 만약 "975 44"라고 주어졌을 때 num 배열들은 아래와 같은 수들이 저장된다.
[0] | [1] | [2] | [3] | |
num1 | 0 | 9 | 7 | 5 |
num2 | 0 | 0 | 4 | 4 |
배열의 끝부분부터 덧셈을 하면서 벡터에 값들을 push 해주고 마지막에는 벡터를 거꾸로 출력해준다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1914번 하노이 탑 (C++) (0) | 2022.01.13 |
---|---|
[BOJ] 10826번 피보나치 수 4 (C++) (0) | 2022.01.11 |
[BOJ] 1010번 다리 놓기 (C++) (0) | 2022.01.10 |
[BOJ] 9461번 파도반 수열 (C++) (0) | 2022.01.09 |
[BOJ] 1316번 그룹 단어 체커 (C++) (0) | 2022.01.08 |