fman1335   3년 전

입력된 문자열 S의 왼쪽부터 시작하여 word 리스트에서 비교해서 일치하는 게 있으면 substring으로 해당 word부분을 제외해 나가는 식으로 구현을 했는데요.

런타임에러가 발생합니다.

krgeo   3년 전

런타임에러는  23번째 줄 if(s.substring(0, word.length()).equals(word)) 에서 에러가 납니다.

왜냐하면 30번째에서 s = s.substring(word.length()-1, s.length());를 해주었기 때문입니다

예제를 통해 보면   

aaa
2
aa
a

입력시  s인 aaa가 word인 aa로인해  aa로 바뀝니다(s = s.substring(word.length()-1, s.length());) 이기 때문-> 이것도 원래는 s = s.substring(word.length(), s.length()); 가 맞음 그래야 aa가 아닌 a로 바뀜)

그다음 s인 aa가 word인 aa로 인해 a로 바뀜 

그다음 비교하려는데  s.substring(0, word.length()).  s인 a를  0부터 aa의 길이인 2전까지 즉 0~1까지 부를려고 하는데 s는 0인덱스까지 밖에없으니까 에러가 발생.

그리고 지금 하신 방식으로는

softwarecontestsoft
3
soft
software
contest

이런 예제에 반례가 발생하므로 DP를 이용해서 푸는걸 권장합니다 :)

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