반응형
https://www.acmicpc.net/problem/15740
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]);
}
반응형
'BOJ > Python' 카테고리의 다른 글
백준 1110번 더하기 사이클 파이썬 (0) | 2021.08.26 |
---|---|
백준 2743번 단어 길이 재기 파이썬 (0) | 2021.08.20 |
백준 11022번 A+B - 8 파이썬 (0) | 2021.08.18 |
백준 11021번 A+B - 7 파이썬 (0) | 2021.08.18 |
백준 10953번 A+B - 6 파이썬 (0) | 2021.08.18 |