godqhrals   1년 전

안녕하세요. 11478번 문제에서 제가 작성한 코드가 문제는 없어보이는데, 틀렸다고 떠서 이유를 잘 모르겠어서 질문을 남깁니다.

제가 생각한 알고리즘은,

1글자부터 (s의 길이)까지 반복문으로 돌면서 반복하고,

s에 대해 substring을 진행하면서 생성된 문자열을 Hashset에 넣으려고 했습니다.

1글자 : (0,1) (1,2) (2,3) (3,4) (4,5) 에 대해 substring 진행

2글자 : (0,2) (1,3) (2,4) (3,5) 에 대해 substring 진행

3글자 : (0,3) (1,4) (2,5) 에 대해 substring 진행

3글자 : (0,4) (1,5) 에 대해 substring 진행

5글자 : (0,5)에 대해 substring 진행

으로 생각해보았습니다. 따라서 start_index는 처음에 0부터 하나씩 올라가게 하고, end_index는 i + 1부터 시작해서 하나씩 올라가면서, end_index가 6 이상이게 되면 더이상 이 while 반복문을 반복하지 않게 하였습니다.

그리고 나서 set 안에 들어간 문자열들을 테스트로 확인했을 때(아래 코드로 확인) 모두 정확하게 잘 들어간 걸 확인할 수 있었습니다.

for (String ss : set) {
    System.out.println(ss);
}

하지만 백준에서 채점을 진행하면 퍼센트도 뜨지 않고 바로 틀렸습니다라고 뜨는데, 그 이유를 잘 모르겠습니다. 

혹시 어떤 부분에서 오류가 있었던 것인지 도와주시면 감사하겠습니다! 읽어주셔서 감사합니다.

tjdnfls1234   1년 전

문자열의 길이가 최대 1000이기 때문에 부분 문자열의 길이도 최대 1000입니다.

이 코드로는 길이가 최대 5인 부분 문자열만 확인할 수 있을 것 같습니다.

godqhrals   1년 전

말씀 듣고 나니까 제 코드의 결함이 제대로 보이네요.. 정말 감사합니다!!

길이가 5인 문자열로만 케이스를 생각해서 돌려봤었는데 앞으로는 더 다양하게 생각해보겠습니다.

도와주셔서 정말 감사합니다. 좋은 하루 되시길 바랍니다!

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