카테고리 없음
백준 10757_큰 수 A+B
oose.
2024. 6. 28. 18:34
#include <iostream>
#include <vector>
using namespace std;
int charToint(char ch){ //문자열을 정수로 변환
return (ch - '0');
}
vector<int> calcPlus(string &a, string &b){ //계산 결과 반환
int idx_a = a.size()-1; //일의 자리부터 계산하기 위해 인덱스 생성
int idx_b = b.size()-1;
bool carry = false;
vector<int> ans;
while(idx_a>=0 && idx_b>=0){ //일의 자리끼리 계산
int num = charToint(a[idx_a--])+charToint(b[idx_b--]);
num += carry; //bool 타입이므로 0 또는 1 이 더해짐
carry = num/10; //십의 자리 올림 발생 여부 확인
ans.push_back(num%10);
}
while(idx_a >= 0){ //자릿수가 남았을 때
int num = charToint(a[idx_a--]);
num+= carry;
carry = num/10;
ans.push_back(num%10);
}
if(carry){ //올림수가 남았을 때
ans.push_back(1);
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
string a, b;
vector<int> ans;
cin >> a >> b;
if(a.length()<b.length()){ //자릿수가 더 큰 걸 앞의 파라미터에 넣어주기 위해
swap(a, b);
}
ans = calcPlus(a, b);
while(!ans.empty()){
cout << ans.back(); //뒤에서부터 출력한다.
ans.pop_back(); //출력후에는 pop
}
}