런타임에러는 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를 이용해서 푸는걸 권장합니다 :)
fman1335 3년 전
입력된 문자열 S의 왼쪽부터 시작하여 word 리스트에서 비교해서 일치하는 게 있으면 substring으로 해당 word부분을 제외해 나가는 식으로 구현을 했는데요.
런타임에러가 발생합니다.