[백준/C++] 10757번: 큰 수 A+B

꿈별·2023년 1월 6일
0

문제풀이

목록 보기
16/52

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.


풀이

  • 문자열을 사용해 A,B를 일의 자리부터 더해줘야 한다.

오답

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
	int plus = 0, tmp = 0;
	string A, B, result;
	cin >> A >> B;
	if (A.size() < B.size())
	{
		swap(A, B);
	}  
	for (int i = 1; i <= A.size(); i++)
	{
		int A_num = A[A.size() - i] - '0';
		int B_num = B.size() - i < 0 ? 0 : B[B.size() - i] - '0';

		tmp = A_num + B_num;
		if (plus == 1)
		{		
			tmp++;
			plus = 0;
		}
		if (tmp >= 10)
		{
			tmp -= 10;
			plus++;
		}
		result += tmp+'0';
	}
    	if (plus)
		result += plus + '0';
	reverse(result.begin(), result.end());
	cout << result;
}

정답

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
	int plus = 0, tmp = 0;
	string A, B, result;
	cin >> A >> B;
	if (A.size() < B.size())
	{
		swap(A, B);
	}  
	for (int i = 1; i <= A.size(); i++)
	{
		int index_a = A.size() - i;
		int index_b = B.size() - i;
		char char_a = A[index_a];
		char char_b = (index_b < 0 ? '0' : B[index_b]);

		//int A_num = A[A.size() - i] - '0';
		//int B_num = B.size() - i < 0 ? 0 : B[B.size() - i] - '0';

		tmp = (char_a - '0') + (char_b - '0') ;
		//tmp = A_num + B_num;
		if (plus == 1)
		{		
			tmp++;
			plus = 0;
		}
		if (tmp >= 10)
		{
			tmp -= 10;
			plus++;
		}
		result += tmp+'0';
	}
	if (plus)
		result += plus + '0';
	reverse(result.begin(), result.end());
	cout << result;
}

💡참고

0개의 댓글