BOJ/Python

백준 15740번 A+B - 9 파이썬

띵지니어 2021. 8. 18. 21:49
반응형

https://www.acmicpc.net/problem/15740

 

15740번: A+B - 9

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

www.acmicpc.net

 

print(sum(map(int,input().split())))

 

파이썬을 이용하면 정말 간단하게 표현을 할 수 있다.

C 언어로 간단히 표현해 보면 아마 서브 태스크 7번, 8번에서 감점을 받을 수 있다.

파이썬은 숫자에 크게 신경을 안 써도 되는 것 같다.

 

 

 

 

 

--- C 언어

#include <stdio.h>

int main(void) {
	long long a, b;

	scanf("%lld %lld",&a,&b);
	printf("%lld", a + b);
}

 

이건 C코드에서 75점 짜리 코드이고 , 100점을 맞추기 위해서는 더욱 분기문을 많이 써줘야 한다.

100점 짜리 코드는 너무 길다 보니 참고만 해야겠다.

 

#include <stdio.h>
#include <string.h>

char n1[10004], n2[10004], s1, s2, *p1, *p2, stk[10010];
int sp, l1, l2, cr, a, b;

int abscomp() {	
	int x = l1, y = l2, i, j;
	x -= s1, y -= s2, i = 1 + s1, j = 1 + s2;
	if (x > y) return 1;
	if (x < y) return -1;
	while (n1[i] && n2[j]) {
		if (n1[i] > n2[j]) return 1;
		if (n1[i++] < n2[j++]) return -1;
	}
	return 0;
}

int main() {
	scanf("%s %s", &n1[1], &n2[1]);
	l1 = strlen(&n1[1]), l2 = strlen(&n2[1]);
	if (n1[1] == '-') s1 = 1, n1[1] = 0;
	if (n2[1] == '-') s2 = 1, n2[1] = 0;
	if (s1 == s2) {
		while (n1[l1] || n2[l2]) {
			a = n1[l1] ? n1[l1--] - '0' : 0;
			b = n2[l2] ? n2[l2--] - '0' : 0;
			stk[sp++] = (a + b + cr) % 10, cr = (a + b + cr) / 10;
		}
		if (cr) stk[sp++] = cr;
	}
	else {
		cr = abscomp();
		if (!cr) s1 = 0, stk[sp++] = 0;
		else {
			if (cr > 0) p1 = n1, p2 = n2;
			else p1 = n2, p2 = n1, s1 = s2, l1 ^= l2 ^= l1 ^= l2;
			cr = 0;
			while (p1[l1] || p2[l2]) {
				a = p1[l1] ? p1[l1--] - '0' : 0;
				b = p2[l2] ? p2[l2--] - '0' : 0;
				if ((a -= b + cr) < 0) cr = 1, a += 10;
				else cr = 0;
				stk[sp++] = a;
			}
			while (!stk[sp -1]) sp--;
		}
	}
	if (s1) putchar('-');
	while (sp > 0) printf("%d", stk[--sp]);
}

 

반응형
목차(index)