#40. [백준_C언어] 10757 : 큰 수 A+B

 

 입력 코드 

#include<stdio.h>
#define A 0
#define B 1

int calLength(char *str) {
	int length = 0;

	for (int i = 0; str[i] != NULL; i++) {
		length++;
	}

	return length;
}

int main() {
	char strA[10001], strB[10001], result[10002];
	int len[2];
	int longer, shorter;
	int t = 0, i, j;
	int sum, carry = 0;

	scanf("%s %s", strA, strB);

	len[A] = calLength(strA);
	len[B] = calLength(strB);

	if (len[A]>len[B]) {
		longer = A, shorter = B;
	}
	else longer = B, shorter = A;

	i = len[longer] - 1, j = len[shorter] - 1;
	while (i >= 0) {
		sum = 0;

		if (longer == A) {
			if (i >= 0) sum += strA[i] - '0';
			if (j >= 0) sum += strB[j] - '0';
		}
		else {
			if (i >= 0) sum += strB[i] - '0';
			if (j >= 0) sum += strA[j] - '0';
		}
		sum += carry;
		if (sum > 9) sum -= 10, carry = 1;
		else carry = 0;
		result[t++] = sum + '0';

		i--, j--;
	}

	if (carry > 0) {
		result[t] = carry + '0';
		len[longer]++;
		result[len[longer]] = NULL;
	}
	else {
		result[len[longer]] = NULL;
	}

	for (int i = len[longer] - 1; i >= 0; i--) {
		printf("%c", result[i]);
	}
	printf("\n");

	return 0;
}

 

 코드 설명 

#배열

 

참고한 사이트

beyond1.tistory.com/65

 

10757)큰 수 A+B

https://www.acmicpc.net/problem/10757 두 수를 더해 그 결과를 출력하는 쉬운 문제처럼 보이지만 더하는 두 수가 10^10000보다 작다. int나 long long 타입으로 위처럼 큰 수를 다룰 수 없기 때문에 문자열로..

beyond1.tistory.com

jaemin8852.tistory.com/255

 

[백준 BOJ] 10757 큰 수 A+B

링크 https://www.acmicpc.net/problem/10757 풀이 숫자를 자릿수마다 배열에 담습니다. 반복문을 이용해서 한 자리씩 계산해줍니다. 여기서 carry bit를 만들어서 받아올림을 구현해줍니다. 마지막에 출력해

jaemin8852.tistory.com

 

 

 문제 출처 

www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

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

www.acmicpc.net