본문 바로가기

SWEA/D2

[SWEA 2007][D2][JAVA] 패턴 마디의 길이

[문제]

패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라.

 

[풀이방법]

비교 문자 (j)를 0번째 인덱스로 두고 i번째 문자가 j와 일치할 때 j를 증가시킵니다. 

만일 일치하지 않다면 j는 0을 유지합니다. (i번째 문자는 계속 0번째 j와 비교하게 됨)

0번째 문자와 일치하는 문자가 나온다면 그게 바로 다음 패턴마디의 시작 인덱스가 됩니다.

 

 


       for (int k = 0; k < T; k++) {

            String s = br.readLine();

            

            sf.append("#" + (k+1+ " ");

        

            int j = 0;

            int i = 1;

            for (i = 1; i < s.length() ; i++) {

                if (s.charAt(i) == s.charAt(j)) 

                    j++;

                else

                    j = 0;

            }

            sf.append(i-+ "\n");

        }

        System.out.println(sf.toString());