[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;
}


결과

코드 실행결과

Categories:

Updated:

Leave a comment