[C++] 프로그래머스 두 수의 합
문제설명
0 이상의 두 정수가 문자열 a, b로 주어질 때,
a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
제한사항
• 1 ≤ a의 길이 ≤ 100,000
• 1 ≤ b의 길이 ≤ 100,000
• a와 b는 숫자로만 이루어져 있습니다.
• a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.
입출력 예
a | b | result |
---|---|---|
“582” | “734” | “1316” |
“18446744073709551615” | “287346502836570928366” | “305793246910280479981” |
“0” | “0” | “0” |
풀이
정수가 문자열로 이루어진 a와 b의 합을 구현하는 문제입니다. 정수 자료형의 범위를 초과하는 경우도 있어서 1의 자리 수 부터 더하기 연산을 하는 로직을 구현하여 문제를 풀 수 있었습니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string a, string b) {
string answer = "";
int i_a = a.length() - 1;
int i_b = b.length() - 1;
int up = 0;
while(i_a >= 0 || i_b >= 0 || up > 0)
{
int sum = up;
if(i_a >= 0)
{
sum += a[i_a] - '0';
i_a--;
}
if(i_b >= 0)
{
sum += b[i_b] - '0';
i_b--;
}
up = sum / 10;
answer.push_back(sum % 10 + '0');
}
reverse(answer.begin(), answer.end());
return answer;
}
결과
Leave a comment