YunGoon   3년 전

char 배열을 scanf의 %s 포맷으로 입력받고 strlen으로 길이를 재면 모든 데이터의 각 줄의 길이가 10 이하인 것으로 확인됩니다(채점번호 22160589).

하지만 std::string을 std::cin으로 입력받고 size() 메소드로 길이를 재면 길이가 11인 데이터가 있는 것으로 확인됩니다(채점번호 22161065, 22161089).

왜 이런 차이가 발생하는 걸까요? 제 생각으로는 입력데이터에 올바르지 못한 유니코드 문자같은 게 섞여들어간게 아닐까 싶은데, 정확한 원인은 모르겠네요. 입력데이터의 확인이 필요할 것 같습니다.

내용추가)

파이썬 정해코드에 len 값이 10을 초과하면 break하는 부분만 추가해줘도 WA가 뜬다고 합니다(채점번호 22161729).

Green55   3년 전

22160589의 assert가 통과 하는 것은, 입력의 길이가 10을 넘는 데이터가 존재하는데 크기가 11인 배열에 입력을 받아 UB가 발생한 것 같습니다. 배열 크기를 100으로 늘리고 제출해보니 런타임 에러가 발생했습니다.

또한 추가적으로 22172905로 알파벳 대문자, 숫자 0~9, 대시 (-) 이외의 문자가 없는것을 확인했으며, 22172948로 길이가 10을 넘는 입력이 있는 것을 확인했습니다.

* 결론 : 이름이 10글자가 넘는 데이터가 존재하며, 삭제 후 재채점 부탁드립니다.

startlink   3년 전

재채점했습니다.

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