티스토리 뷰

2007. 패턴 마디의 길이

swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5P1kNKAl8DFAUq&categoryId=AV5P1kNKAl8DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

import java.util.Scanner;

public class SWEA2007 {
	// 210129
	// 2007. 패턴 마디의 길이
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); 
		
		int N = sc.nextInt();
		
		for (int tc = 1; tc<=N; tc++) {
			char[] arr = sc.next().toCharArray();
			
			int j=1; // 길이는 1부터 시작
			for (int i=0; i<arr.length-1; i++) {
				// arr[0] == arr[j]
				// arr[1] == arr[j+1] 
				// .....
				for(; j<arr.length-1-i; j++) {
					if (arr[i] == arr[i+j]) {
						break;
					}
				}
			}
			
			System.out.println("#" + tc + " " + j);
		} // for
		
		sc.close();	
	} // main
}

 

엄청 어렵게 생각했다.

길이를 1씩 늘리면서

(arr[0] ~ arr[길이]) == (arr[길이+1] ~ arr[길이*2])인지 살펴보고 같으면 (arr[길이*2+1] ~ arr[길이*3]) ~ 끝까지 같은지 살펴보았는데 인덱스 초과 에러가 계속 나서 머리 싸매다가 검색해보고 깨달았다.

패턴마다 같은 문자열이 반복된다면 부분 배열을 전부 비교할 필요가 없다. 앞에서부터 한글자씩 같은지 비교해보면 된다.

문자열의 지옥..

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함