문제설명
0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ a의 길이 ≤ 100,000
- 1 ≤ b의 길이 ≤ 100,000
- a와 b는 숫자로만 이루어져 있습니다.
- a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.
입출력 예

입출력 예 #1
- 예제 1번의 a, b는 각각 582, 734이고 582 + 734 = 1316입니다. 따라서 "1316"을 return 합니다.
입출력 예 #2
- 예제 2번의 a, b는 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981입니다. 따라서 "305793246910280479981"을 return 합니다.
입출력 예 #3
- 예제 3번의 a, b는 각각 0, 0이고 0 + 0 = 0입니다. 따라서 "0"을 return 합니다.
작성코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string a, string b) {
string answer = "";
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
if (a.size() < b.size())
swap(a, b);
b.resize(a.size(), '0');
int carry = 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)
answer += carry + '0';
reverse(answer.begin(), answer.end());
return answer;
}
문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/181846
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'C++ > 코딩 기초 트레이닝' 카테고리의 다른 글
[C++/프로그래머스] 배열의 원소 삭제하기 (0) | 2023.12.15 |
---|---|
[C++/프로그래머스] 문자열로 변환 (0) | 2023.12.15 |
[C++/프로그래머스] 0 떼기 (0) | 2023.12.15 |
[C++/프로그래머스] 문자열을 정수로 변환하기 (0) | 2023.12.14 |
[C++/프로그래머스] 문자열 정수의 합 (0) | 2023.12.14 |