인프런 커뮤니티 질문&답변

moveityourself01님의 프로필 이미지
moveityourself01

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-G

1-G 개인 코드 에러 질문

작성

·

322

0

http://boj.kr/91b33f2afbf548df86815aa98fb8dcc7

 

제가 작성한 코드입니다. (강의에서 선생님께서 말씀해주신 반례를 위한 코드는 포함되어있지 않습니다.)

 

VSCode에서 입력하는 도중에 다음과 같은 에러 문구가 뜨면서 강제종료되었습니다.

terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr: __pos (which is 4294967295) > this -> size() (which is 3)

 

어떤 부분이 잘못되었는지 모르겠습니다ㅠ

 

코드가 불친절한 점 죄송합니다.

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 01님 ㅎㅎ

일단 예제 1같은경우

3

a*d

abcd

anestonestod

facebook

NE

NE

NE

이렇게 뜹니다.

인덱싱이 잘못된 것 같은데요.

        st1 = str[i].substr(0, pt1.size());
        st2 = str[i].substr(str[i].size() - pt2.size());

이렇게 한번 고쳐보시겠어요?

그리고 제가 반례로 설명한 크기 관련 비교하는 로직 넣어주시면 될 것같아요.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요. 오류 메시지를 살펴보면 ‘std::out_of_range’ 에러가 발생했다는 것을 알 수 있어요. 이는 basic_string::substr에서 발생한 오류로 보입니다. substr 함수는 문자열의 일부를 추출하는 함수인데, 오류 메시지에서는 __pos (which is 4294967295)가 문자열의 길이인 this->size() (which is 3)보다 크다고 나와있습니다.

해당 오류가 발생하는 부분인 코드의 내용을 살펴보면서 어떤 부분이 잘못되었는지 찾아보아야 할 것 같습니다. 그리고 어떤 목적으로 코드를 작성하셨는지도 알려주시면 더 자세한 답변을 드릴 수 있을 것 같아요. 코드가 불친절하다고 말씀하셨지만, 어떤 부분이 불친절한지 구체적으로 알려주시면 코드를 더 쉽게 이해하고 도움을 드릴 수 있을 것 같습니다. 아울러, 해당 코드의 용도와 예상되는 입출력 형태에 대한 정보도 함께 알려주시면 도움이 될 것 같아요.

moveityourself01님의 프로필 이미지
moveityourself01

작성한 질문수

질문하기