Level 0. 두 수의 합
숫자를 앞에 붙이면서 불필요한 밀기 연산이나 메모리 재할당을 최소화하기 위해, 뒤로 붙인 후 마지막에 역순으로 재배열해줬다.
#include <iostream>
#include <algorithm>
using namespace std;
string solution(string a, string b)
{
string answer = "";
size_t lenA = a.length(), lenB = b.length();
int last = max(lenA, lenB), carry = 0;
for (int i = 1; i <= last; ++i)
{
int A = (i <= lenA) ? (a[lenA - i] - '0') : 0;
int B = (i <= lenB) ? (b[lenB - i] - '0') : 0;
int sum = A + B + carry;
answer += ('0' + sum % 10);
carry = sum / 10;
}
answer += (carry ? "1" : "");
reverse(answer.begin(), answer.end());
return answer;
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 0. 문자열 겹쳐쓰기 (0) | 2023.05.16 |
---|---|
Level 0. 수열과 구간 쿼리 2 (0) | 2023.05.15 |
Level 0. 배열 만들기 4 (0) | 2023.05.13 |
Level 0. 배열 만들기 2 (0) | 2023.05.12 |
Level 2. [1차] 뉴스 클러스터링 (0) | 2023.05.11 |