반응형
<코드>
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
int N, sum;
int num1[10001], num2[10001];
string s1, s2, tmp;
vector<int> ans;
int main()
{
cin >> s1 >> s2;
// 더 긴 수를 s1으로 저장하기
if (s1.size() < s2.size())
{
tmp = s1;
s1 = s2;
s2 = tmp;
}
// num1, num2 배열을 만드는 과정
for (int i = 0; i < s1.size(); i++)
num1[i + 1] = s1[i] - '0';
for (int i = 0; i < s2.size(); i++)
num2[i + 1 + (s1.size()-s2.size())] = s2[i] - '0';
// num배열들의 끝부분부터 덧셈을 하면서 ans벡터에 값 저장
for (int i = s1.size(); i > 0; i--)
{
sum = num1[i] + num2[i];
if (sum >= 10)
{
num1[i - 1]++;
sum -= 10;
}
ans.push_back(sum);
}
// 맨 앞자리수 출력
if (num1[0] != 0) cout << 1;
// ans벡터 거꾸로 출력
for (int i = ans.size() - 1; i >= 0; i--)
{
cout << ans[i];
}
}
풀이 방법
입력이 만약 "975 44"라고 주어졌을 때
num 배열들은 아래와 같이 수들이 저장된다.
그리고 배열의 끝부분부터 덧셈을 하면서 ans벡터에 값들을 push 해주고 마지막에는 ans벡터를 거꾸로 출력해준다.
코드를 제출할 때 파이썬은 그냥 a+b로, 자바는 bigInteger을 사용해서 비교적 쉬우나 C로는 구현할때는 좀 성가셨다.
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 2293번 - 동전 1 (DP) (0) | 2020.12.25 |
---|---|
[C/C++] 백준 10826번 - 피보나치 수 4 (0) | 2020.12.23 |
[C/C++] 백준 2747번 - 피보나치 수 (0) | 2020.12.23 |
[C/C++] 백준 2749번 - 피보나치 수 3 (0) | 2020.12.23 |
[C/C++] 백준 9471번 - 피사노 주기 (0) | 2020.12.23 |