plzrun   9달 전

해당 소스코드를 C언어 형태로 작성했을 때, 런타임에러가 나길래

C++형태로 바꿔보았는데 틀렸다고 나옵니다.


대체 어디가 문제일까요 ㅠㅠ?

indioindio   9달 전

j가 hay의 범위를 넘어가는 경우가 생길 것 같네요.

string을 사용하실거라면 string.find()를 사용하는 것도 나쁜 생각은 아닐 것 같습니다.

plzrun   9달 전

아! 알겠다 ㅎㅎ 감사합니다 ㅎㅎ

plzrun   9달 전

그걸 바꿔봤는데도 결과는 아직 틀렸다고 나오네요 ㅠ

좀 더 고민해보겠습니다.

indioindio   9달 전

네 아마 이런 경우에 틀리지 않을까 싶네요.
abcabc
1
abc
hay를 두 개 합치는 게 편하긴 한데 이런 케이스는 따로 처리해주셔야 할 것 같습니다.

plzrun   9달 전

아래와 같이 코드를 바꿨는데도 틀린걸 보면,

hay가 2개 중첩되는 곳에서 찾는게 문제가 되는가 봅니다. (10번째 줄)

hay글자 2개 합친걸 hayhay라고 표현하자면,

hayhay안에 찾고자 하는 단어가 2개라도... 하나로만 체크하게 되어있는데

왜 에러가 나는지는 모르겠어요.


이거 너무 답답하네요 ㅠ

plzrun   9달 전

그게... 이 문제 바늘에 해당하는 문자는 10문자 이내이고...

건초에 해당하는 문자는 딱 10문자라서 그런 문제가 발생할 가능성이 없지 않나요?

indioindio   9달 전

음 find함수는 찾은 문장의 첫 인덱스를 아마 반환할겁니다. 첫 글자의 인덱스는 0이죠.

indioindio   9달 전

아 그렇네요 저런 케이스는 없을 것 같네요.

plzrun   9달 전

아 그렇군요! 제가 그게.. 오늘 처음 string을 써봐서요.. 그동안에는 전부 char[]로 처리했었거든요 ㅎ; 아무튼 감사합니다!! 또 시도해볼게요 ㅎ

plzrun   9달 전

말씀해주신대로 0이 아니라 string::npos와 비교하니까 답이 맞다고 나왔어요~! ㅎ

그런데 처음 짰던 코드가 왜 틀렸는지는 고민해봐야겠네요 ㅠ... 대체 왜 틀린걸까요?;

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