geteking   5년 전

string의 각각 자리에 체크표시를 할 수 있도록 클래스를 하나 만들어서, 먼저 크로아티아 문자의 개수를 구하고, 크로아티아 문자가 아닌 개수를 구하여 더한 값을 출력하였습니다.

문제에서의 예시와, 공식홈페이지의 테스트케이스를 모두 넣어보고, 이 문제와 관련된 질문의 모든 반례들과 직접 만든 예시들을 넣어 보았고 모두 정상출력 되지만, 채점은 틀렸다고 나옵니다.

혹시 어떤 테스트케이스에서 실패하는 것인지 보이시는 분들은 도움 부탁드립니다.

djm03178   5년 전

40, 56번째 줄에서 temp라는 "char형 배열"을 가지고 string 객체를 만들고 있는데, 이 "char형 배열"은 "문자열"이 아닙니다. "문자열"은 반드시 널 문자로 끝나야 하는데 이 배열에는 널 문자가 없습니다. 그래서 string 역시 이 배열을 가지고 string 객체를 생성하기 위해서 널 문자를 찾지만, 널 문자를 넣은 적이 없기 때문에 배열의 크기를 넘어서 계속 탐색하게 되고, 이때 널 문자(0)가 우연히도 바로 뒤에 나타나면 정답을 출력하겠지만 그렇지 않으면 오답이 되거나 런타임 에러도 날 수 있습니다.

char temp[2]; -> char temp[3] = {0};

char temp[3]; -> char temp[4] = {0};

로 바꾸면 통과됩니다.

geteking   5년 전

djm03178님 감사드립니다.

문자열에서 가장 중요한 개념을 잊고 있었군요.. 덕분에 해결하였습니다 !

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