hyundo1226   1년 전

10^5까지의 test case도 다 되는것같은데 왜 런타임에러가 뜨는지 모르겠네요.. 고수님들 부탁드립니다ㅠㅠ

3587jjh   1년 전

코드에 문제가 너무 많은것 같습니다..

일단 memset은 초기화값이 -1과 0 외엔 함부로 쓰면 안되고

%s로 arr을 받을때 arr자체가 포인터이므로 &arr이 아닌 arr로 씁니다..

i - 1은 arr의 크기를 나타내는 값인것 같은데  왜 strlen함수를 사용 안했는지 모르겠고

temp += (int)arr[j]의 경우에도 arr[j]가 숫자 3이 아니고 문자 '3'같은 값이기 때문에 temp += arr[j] - '0'와 같이 쓰는게 맞습니다..

그리고 딱히 함수도 없는데 왜 굳이 변수들을 다 전역에 선언했는지..

윗분 글을 보충하겠습니다.

일단 런타임에러는 첫번째 scanf문에 나오는 것 같습니다.

윗분 말처럼 &를 빼주셔야 할 것 같습니다.

또 temp += (int)arr[j]도 윗분 말처럼 temp += arr[j]-'0'로 하셔야 합니다.

하지만 memset은 1바이트에 지정한 값을 저장하므로

1바이트를 가진 char형 배열을 초기화할 수 있습니다.

그리고 이 소스에 나와있는 모든 i-1을 i로 고쳐주셔야 합니다.

이미 i에 문자열의 길이를 저장했으므로 strlen을 쓰지 않아도 좋습니다.

27번째 줄 for문의 j=i-2는 j=i-1로 바꿔주세요.

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