두 수의 합 : 문제 링크
- 1 <= a, b의 길이 <= 100,000
algorithm 헤더의 reverse() 함수 사용법
1. 배열
reverse(a, a+5); => a 배열의 처음부터 다섯번째 요소까지 뒤집음
2. 문자열, 벡터
1) reverse(str.begin(), str.end()); => 문자열 str의 처음부터 끝까지 뒤집음
2) reverse(v.begin()+1, v.end()-1); => 벡터 v의 두번째부터 마지막 이전 요소까지 뒤집음
#include <string>
#include <algorithm>
using namespace std;
string solution(string a, string b) {
string answer = "";
int carry = 0;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
if(a.size() < b.size()) a.resize(b.size(), '0');
else b.resize(a.size(), '0');
for(int i = 0; i < a.size(); ++i) {
int sum = (a[i] - '0') + (b[i] - '0') + carry;
carry = sum / 10;
sum %= 10;
answer += sum + '0';
}
if(carry != 0) answer += to_string(carry);
reverse(answer.begin(), answer.end());
return answer;
}