반응형
2007. 패턴 마디의 길이
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 분석
- 문자열에서 반복되는 부분(마디)의 길이를 출력해라
해결 포인트
- 시간은 30초로 넉넉해서 생각한대로 구현해도 됨
- 첫번째 문자와 동일한 문자가 발견되면 추측 시작
- 마디 추측 중인지를 알 수 있는 변수 : isChecking
- 동일한 문자의 index 저장 : secondStart
- 마디 추측 방법
- 첫번째 문자(firsrtStart)를 0부터 index를 증가시키면서 문자가 동일한지 확인
- secondStart까지 인덱스가 증가하면 secondStart까지의 길이가 마디의 길이
- 중간에 동일하지 않을 경우, 마디 추측 종료 및 첫 번째 문자 0으로 초기화
- firsrtStart는 0으로 초기화하면 확인 for문은 1부터 시작해야함
코드
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
sc.nextLine();
for(int test_case = 1; test_case <= T; test_case++)
{
String s = sc.nextLine();
int firstStart = 0;
int secondStart = 0;
boolean isChecking = false;
int result = 0;
for(int i=1;i<s.length();i++) {
// 마디 추측되고 있는 중이 아닐 경우
if(!isChecking) {
// 첫번째 문자와 동일 문자가 발견되면 마디 추측 시작
if (s.charAt(i) == s.charAt(firstStart)) {
secondStart = i;
firstStart++;
isChecking = true;
}
}
// 마디 추측 중
else {
// 마디가 다른지 첫번째 문자가 같았던 index까지 반복
if(s.charAt(i) == s.charAt(firstStart)) {
firstStart++;
// 첫번째 문자가 같았던 index까지 마디가 같을 경우 결과 도출 및 종료
if(secondStart == firstStart) {
result = secondStart;
break;
}
}
// 마디가 다를시 마디추측 종료 및 초기화
else {
firstStart = 0;
isChecking = false;
}
}
}
System.out.println("#" + test_case + " " + result);
}
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[백준 22945] 팀 빌딩 (JAVA) (1) | 2023.11.15 |
---|---|
[SW Expert D2] 2005. 파스칼의 삼각형 (1) | 2023.11.13 |
[SW Expert D2] 1926. 간단한 369게임 (0) | 2023.11.13 |
[SW Expert D2] 1859 : 백만 장자 프로젝트 (0) | 2023.11.13 |
[백준 22862] 가장 긴 짝수 연속한 부분 수열 (JAVA) (0) | 2023.11.13 |