Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 10757 - 큰 수 A+B(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/10757
python을 이용하면 굉장히 쉽게 풀 수 있겠지만, C or C++은 자료형에 수의 한계가 정해져 있습니다.
따라서 큰 수 계산을 위한 코드를 짜야했던 문제입니다.
접근 방법은 먼저, 두 수를 뒤집습니다. 1의 자리부터 계산하기 위함입니다.
for문을 통해 1자리씩 넘어가면서 계산을 합니다.
한자리수의 합을 계산한 뒤, 이를 string을 사용한 정답에 계속 이어 붙여주는 방법입니다.
자세한 것은 코드를 참고해주세요
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#include <deque>
#include <stack>
#include <map>
using namespace std;
string a, b;
int ans[100000];
string Ans;
void solve() {
int num = 0;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for(int i = 0; i < max(a.size(), b.size()); i++){
int sum = 0;
if(a.size() >= i + 1&& b.size() < i + 1) sum = a[i] - '0';
else if(a.size() < i + 1 && b.size() >= i + 1) sum = b[i] - '0';
else sum = (b[i] - '0' + a[i] - '0');
ans[i] += sum;
ans[i+1] += (ans[i] / 10);
ans[i] %= 10;
Ans += ans[i] + '0';
num++;
}
if(ans[num] > 0) Ans += ans[num] + '0';
reverse(Ans.begin(), Ans.end());
cout << Ans;
}
int main() {
cin.tie(0);
cout.tie(0);
cin >> a >> b;
solve();
return 0;
}
질문 및 조언은 댓글을 남겨주세요
'백준' 카테고리의 다른 글
백준 7453 - 합이 0인 네 정수(C++) (0) | 2023.01.28 |
---|---|
백준 11652- 카드(C++) (0) | 2023.01.28 |
백준 1759 - 암호 만들기(C++) (0) | 2023.01.28 |
백준 1450 - 냅색 문제(C++) (0) | 2023.01.24 |
백준 1208 - 부분수열의 합 2(C++, 복습) (0) | 2023.01.23 |