백준(C언어)/22년 8월
8월 4일(목) - 7단계(10757번)
C0MPAS
2022. 8. 4. 22:32
7단계 - 10757번
10757번: 큰 수 A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제점
1. 단순 A+B 문제가 c/c++에서 왜 이 난이도에서 나오는지를 처음에는 알지 못했다
-> 검색해본 결과, c언어에서 처리가능한 int의 범위 때문에 만들어진 문제라는 것을 인식했다
2.
///////////////////////////////////////////
https://kiffblog.tistory.com/172
사실 뭘 어떻게 풀이해야하는지 전혀 감을 잡지를 못해서 위 출처의 코드를 사용했다.
-> 추가적인 복습 및 공부가 필요하다
///////////////////////////////////////////
풀이
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char arr[]) //계산이 편하도록 배열 역순정렬
{
int len = strlen(arr);
for (int i = 0; i < len / 2; i++)
{
char temp = arr[i];
arr[i] = arr[len - i - 1];
arr[len - i - 1] = temp;
}
}
int main(void)
{
char A[10002] = { 0 }, B[10002] = { 0 }, res[10003] = { 0 };
int carry = 0, i;
scanf("%s%s", A, B);
reverse(A);
reverse(B);
int len = strlen(A) > strlen(B) ? strlen(A) : strlen(B);
for (i = 0; i < len; i++)
{
int sum = A[i] - '0' + B[i] - '0' + carry;
while (sum < 0) sum += '0';
if (sum > 9) carry = 1;
else carry = 0;
res[i] = sum % 10 + '0';
}
if (carry == 1) res[len] = '1';
reverse(res);
printf("%s", res);
return 0;
}