thseogh135   3년 전

결과: 틀렸습니다

게시판을 읽고 나온 반례을 테스트해봤고 정상 출력됩니다.

다른 반례가 있거나 혹은 코드상에 문제가 있는지 도와주세요!

11 11111 11122

11111 11 11122

111 111 222

9999 99 10098

99 9999 10098

999 999 1998

10 1 11

1 10 11

# 설명

- main : A와 B를 받아서

- get_sum : 배열의 맨마지막 index부터  0 index까지 한자리씩 더해주고 %10을 한 값을 새로운 배열(sum)에 0 index부터 추가. 

- print_reverse: sum배열을 마지막 인덱스부터 0인덱스까지 출력

----------

- A와 B의 길이를 구한 뒤, 둘 중 큰 값 - 1을 max_idx에 넣고 0부터 max_idx까지 while문 실행 (인덱스로 사용하기 위해 -1) 

int idx = 0;

A_idx = strlen(A) - 1;
B_idx = strlen(B) - 1;
max_idx = A_idx > B_idx ? A_idx : B_idx;

while (idx < max_idx)

{
}

- A와 B의 맨 마지막 인덱스부터 시작해서 0인덱스까지

a, b에 문자를 숫자로 바꿔서 넣어주고,

A_idx가 0밑으로 내려가면 a = 0; B_idx가 0밑으로 내려가면 b = 0;

sum의 0인덱스부터 순서대로 (a + b + regroup) % 10을 하고 + '0'을 해줘서 문자로 바꿔줌

- regroup은 0부터 시작하여 합계가 10이상이 되면 1, 아니면 0

int regroup = 0;

a = A[A_idx] - '0';
b = B[B_idx] - '0';
n = a + b + regroup;
if (A_idx < 0)
n = b + regroup;
if (B_idx < 0)
n = a + regroup;
sum[idx++] = (n % 10) + '0';
regroup = (n >= 10) ? 1 : 0;
A_idx--;
B_idx--;

----------

- while문이 끝난뒤 자리넘김이 발생했을 때, sum의 마지막 인덱스에 1 넣기. 그 다음 인덱스에는 문자열의 끝을 나타내기 위해 \0을 넣음

if (regroup == 1)
sum[idx++] = regroup + '0';
sum[idx] = '\0';

thseogh135   3년 전

현재 재귀함수로 출력시키는 방법을 바꿔줬더니 통과했습니다.

(print_reverse 함수를 대신 ft_reverse로)

왜 재귀함수를 사용해서 출력했을 때에는 '틀렸습니다'가 뜨는걸까요??

thseogh135   3년 전


댓글을 작성하려면 로그인해야 합니다.