SWEA - 패턴 마디의 길이
문제 분석
- 패턴에서 반복되는 부분을 마디라고 부른다
- 문자열을 입력 받아 마디의 길이를 출력하자
입력
- 첫 줄에는 테스트 케이스의 개수 T
- 문자열의 길이는 30, 마디의 최대 길이는 10
출력
코드 구현
import java.io.*;
public class No_2007 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++) {
String str = br.readLine();
int answer = 0;
for(int j = 1; j <= 10; j++) {
String pattern1 = str.substring(0, j);
String pattern2 = str.substring(j, j + j);
if(pattern1.equals(pattern2)) {
answer = j;
break;
}
}
System.out.println("#" + (i+1) + " " + answer);
}
}
}
💡문제 풀이
- 브루트 포스(완전 탐색) 방식으로 모든 경우를 다 확인하는 방식으로 풀었다
- 마디의 최대 길이는 10이므로 1부터 10까지 차례대로 가정
- 가정한 길이 j만큼 문자열 자르기
- 첫 번째 마디 :
str.substring(0, j)
- 두 번째 마디 :
str.substring(j, j + j)
- 첫 번째 마디와 두 번째 마디가 같은지
equals를 사용하여 확인
- 만약 같고 제일 먼저 발견된 길이가 최소 길이니까 반복문 종료후 빠져나오기