티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/15353
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int arr[10001];
int main() {
string s1, s2;
cin >> s1 >> s2;
// 두 문자열의 길이를 맞추기
if (s1.size() < s2.size()) s1.insert(0, s2.size() - s1.size(), '0');
else s2.insert(0, s1.size() - s2.size(), '0');
string result = "";
int carry = 0;
// 가장 낮은 자리부터 덧셈 수행
for (int i = s1.size() - 1; i >= 0; i--)
{
int sum = (s1[i] - '0') + (s2[i] - '0') + carry;
carry = sum / 10;
sum %= 10;
result += sum + '0';
}
// 마지막 올림 체크
if (carry) result += carry + '0';
// 결과를 뒤집어서 출력
reverse(result.begin(), result.end());
cout << result << endl;
return 0;
}
수가 크기에 문자열로 변환하고 하나하나 직접 더해준다.
우선 문자열의 길이를 서로 같게 만들어주어야 하기 때문에, 문자열 길이 체크 후 부족한 만큼 0을 채워준다.
이후 덧셈이기에 가장 낮은 자리부터 진행하며, 올림 수를 체크한다.
올림 수가 발생하면 따로 저장해두고, 현재 값은 올림 수를 제외한 나머지로 문자열에 저장해준다.
마지막 올림 수는 반복문 내에서 체크가 안되기 때문에 반복문 이후에 따로 체크해준다.
이렇게 구한 문자열은 저장할 때 반대로 되었기 때문에 다시 뒤집어서 출력해준다.
'백준 > 실버' 카테고리의 다른 글
[백준 1124번] 언더프라임 (C++) (0) | 2025.06.15 |
---|---|
[백준 9009번] 피보나치 (C++) (0) | 2025.06.11 |
[백준 32981번] 찐 Even Number (C++) (0) | 2025.06.04 |
[백준 12871번] 무한 문자열 (C++) (0) | 2025.06.03 |
[백준 11068번] 회문인 수 (C++) (0) | 2025.05.25 |