250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(SWEA c++)3260. 두 수의 덧셈 본문
728x90
반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
주어지는 수가 INT형으로는 표현하지 못하는 수다.
그렇기 때문에 string으로 변환하여 string 형태로 정답을 반환해주면 된다.
우선 두 수를 string형 변수 a, b에 넣어주도록 한다.
그리고 두 수의 자릿수를 비교하여 작은 쪽을 a, 큰 쪽을 b로 해준다.
자릿수가 다르면 a의 자릿수를 b 만큼 '0'을 넣어 같도록 맞춰준다.
int형 변수 up은 올림값이고, sum은 각 자릿수를 더한 값을 나타낸다.
만약 up + a의 현재 자릿수의 값 + b의 현재 자릿수의 값이 10이 넘어가면 앞 자리에 1을 더해야 하기 때문에
up = 1로 바꿔주고, ans 변수에 (sum - 10)을 뺀 값을 넣어주도록 한다.
넣을 때는 string 형태로 저장해야 하기 때문에 + '0'을 해주도록 한다.
for문을 다 돌고나서 만약 up이 0이 아니라면 올림값이 남아있기 때문에 마지막에 '1'을 넣어주면 된다.
출력하기 전 reverse를 통해 ans를 뒤집어주면 답이 나온다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
for(int tc = 1; tc <= t; tc++)
{
string a, b, ans = "";
int up = 0, sum = 0;
cin >> a >> b;
if(a.size() > b.size())
swap(a, b);
for(int i = a.size(); i < b.size(); i++)
a = '0' + a;
for(int i = b.size() - 1; i >= 0; i--)
{
sum = up + (a[i] - '0') + (b[i] - '0');
if(sum >= 10)
{
up = 1;
ans.push_back(sum - 10 + '0');
}
else
{
up = 0;
ans.push_back(sum + '0');
}
}
if(up)
ans.push_back('1');
reverse(ans.begin(), ans.end());
cout << "#" << tc << " " << ans << endl;
}
return 0;
}
728x90
반응형
'SW Expert Academy' 카테고리의 다른 글
(SWEA c++)3282. 0/1 Knapsack (0) | 2020.11.02 |
---|---|
(SWEA c++)3304. 최장 공통 부분 수열 (0) | 2020.11.02 |
(SWEA c++)3233. 정삼각형 분할 놀이 (0) | 2020.10.28 |
(SWEA c++)3142. 영준이와 신비한 뿔의 숲 (0) | 2020.10.27 |
(SWEA c++)3131. 100만 이하의 모든 소수 (0) | 2020.10.27 |