[CodeUp] #3021-큰 수 덧셈(스택)

chrmqgozj·2022년 1월 21일
0

CodeUp

목록 보기
16/48
#include <iostream>
#include <stack>
using namespace std;

int main(){
	string a,b;
	stack<char> s1,s2;
	stack<int> ans;
	cin >> a >> b;
	
	for(int i=0;i<a.size();i++){
		s1.push(a[i]);
	}
	for(int i=0;i<b.size();i++){
		s2.push(b[i]);
	}
	
	if(s1.size()<s2.size()){
		swap(s1,s2);
	}

	int extra = 0;
	while(!s1.empty() && !s2.empty() ){
		int x1 = s1.top()-'0';
		int x2 = s2.top()-'0';
		ans.push((x1+x2+extra)%10);
		extra = (x1+x2+extra)/10;
		s1.pop();
		s2.pop();
	}
	if(extra!=0){
		if(s1.empty()){
			ans.push(extra);
			extra = 0;
		}
		else{
			while(!s1.empty()){
				int x = s1.top()-'0';
				ans.push((x+extra)%10);
				extra = (x+extra)/10;
				s1.pop();
			}
		}
	}
	else{
		while(!s1.empty()){
				int x = s1.top()-'0';
				ans.push((x+extra)%10);
				extra = (x+extra)/10;
				s1.pop();
			}
	}

	if(extra!=0){
		ans.push(extra);
	}
	
	while(!ans.empty()){
		cout << ans.top();
		ans.pop();
	}
	
}

0개의 댓글

관련 채용 정보