[문제]
패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라.
[풀이방법]
비교 문자 (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-j + "\n");
}
System.out.println(sf.toString());
'SWEA > D2' 카테고리의 다른 글
[SWEA 1986][D2][JAVA] 지그재그 숫자 (0) | 2019.04.30 |
---|---|
[SWEA 1989][D2][JAVA] 초심자의 회문검사 (0) | 2019.04.30 |
[SWEA 2005][D2][JAVA] 파스칼의 삼각형 (0) | 2019.04.29 |
[SWEA 2001][D2][JAVA] 파리퇴치 (0) | 2019.04.29 |
[SWEA][D2][JAVA] 간단한 369게임 (0) | 2019.04.29 |