10진수가 자리수마다 나뉘어있는 정수형 벡터 num과 이 벡터에 더할 값 k가 주어진다.
num에 k를 더한 후 똑같이 10진수로 자리수마다 나뉜 정수형 벡터를 구하여 반환하는 문제
class Solution {
public:
vector<int> addToArrayForm(vector<int>& num, int k) {
int digit{10};
vector<int> result(num.size());
for (int i = 0; 0 < k; ++i)
{
auto division = std::div(k, digit);
if (result.size() == i)
{
result.emplace_back(division.rem);
}
else
{
result[i] = division.rem;
}
k = division.quot;
}
auto numIter{num.rbegin()};
auto resultIter{result.begin()};
bool carry{false};
while (resultIter != result.end() && numIter != num.rend())
{
if (carry)
{
carry = false;
++(*resultIter);
}
*resultIter += *numIter;
if (9 < *resultIter)
{
carry = true;
*resultIter -= 10;
}
++numIter;
++resultIter;
}
while (resultIter != result.end())
{
if (carry)
{
carry = false;
++(*resultIter);
}
if (9 < *resultIter)
{
carry = true;
*resultIter -= 10;
}
++resultIter;
}
if (carry)
{
result.push_back(1);
}
std::reverse(result.begin(), result.end());
return result;
}
};