rootsquare   1년 전

제출 번호 43119945 (맞았습니다)

제출 번호 43119998 (틀렸습니다)

두 코드가 둘다 73번째 줄에 있는 reverse_word 함수 외에는 다른 부분이 없는데 결과가 다르게 나오고 있습니다.

해당 함수는 문자열을 입력받으면 그 문자열을 거꾸로 해서 원래 문자열에 저장하는 함수인데,

아래 두 코드가 어떤 차이가 있는 지 궁금합니다.


ps. 두 함수 모두 word[]는 0번 인덱스 부터 문자열이 시작합니다.

YunGoon   1년 전

j가 char형이라 1바이트 크기에 해당하는 정수밖에 담지 못합니다.

rootsquare   1년 전

아 char랑 char[]가 같은 줄 알았는데 다른거였군요(정수, 포인터)

답변 감사합니다!

YunGoon   1년 전

엇... 뭔가 제대로 이해하신 게 맞는지 싶어 부연설명하자면,

AC 코드는 char tmp[2010] 배열을 선언하여 뒤집어 복사한 후 그대로 원본 배열에 덮어씌우고 있기 때문에 문제될 곳이 없습니다.

반면 WA 코드는 글자 하나하나를 스왑하기 위해 임시 변수 char tmp를 선언하셨는데, 여기까진 문제될 게 없습니다.

하지만 char tmp를 선언하시면서 j도 같이 선언했기 때문에 j는 char형이 되었고, 그 결과 127보다 큰 값을 저장하지 못하게 됩니다.

word의 길이가 127보다 크다면 j에는 제대로 된 값이 들어가지 않겠지요.

다음처럼 따로 선언하시면 43119998번 코드도 통과될 겁니다.

rootsquare   1년 전

확인했습니다! tmp가 아니라 j 범위가 문제였네요.

변수 여려 개 쓸 때 자료형을 조심해야 겠습니다. 알려주신 대로 코드를 수정한 결과 맞았습니다가 나옵니다.

자세한 설명에 다시 한 번 감사드립니다.

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