처음엔 a와 b의 길이에 따라 경우를 나눠서 계산했는데, 다른 분의 풀이 중 길이를 맞춰서 계산하는 게 훨씬 코드가 깔끔해서 그 방식으로 바꿔서 풀었다.
먼저 문자열을 뒤집어 0번째 인덱스부터 계산하고자 했다. 이 때 짧은 문자열에 '0'을 넣어 긴 문자열과의 길이를 맞췄다.먼저 한 자리씩 정수형으로 계산했고, 이를 10 이하의 수로 만들어 정수형 배열에 저장했다.해당 배열을 문자열로 바꿔 저장했고, 이를 뒤집어 출력했다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string a, string b) {
string answer = "";
vector<int> S;
int la = a.size(), lb = b.size();
// 길이 맞춰주기
reverse(a.begin(), a.end()); reverse(b.begin(), b.end());
if(lb > la) swap(a,b), swap(la,lb);
for(int i = lb; i < la; i++) b += '0';
// 계산한 값을 정수형으로 저장
int c = 0;
for(int i = 0; i < la; i++){
int sum = a[i]-'0' + b[i]-'0' + c;
c = sum/10;
S.push_back(sum%10);
}
if(c!=0) S.push_back(c);
// 문자열로 변환
for(int i = 0; i < S.size(); i++) answer += (S[i] + '0');
reverse(answer.begin(), answer.end());
return answer;
}