"SWEA 2007 패턴 마디의 길이"의 두 판 사이의 차이

4번째 줄: 4번째 줄:
* 마지막에는 도중에 끊길 수 있다.
* 마지막에는 도중에 끊길 수 있다.
* 내부적으로는 반복이 없는 반복단위를 찾는 문제이다.
* 내부적으로는 반복이 없는 반복단위를 찾는 문제이다.
* 패턴의 길이는 2~10이므로 짧은 단위부터 조사하여 가장 짧은 것을 찾는다.  
* 패턴의 길이는 10이하이므로 짧은 단위부터 조사하여 가장 짧은 것을 찾는다.  


{{SWEA 헤더}}
{{SWEA 헤더}}

2019년 1월 25일 (금) 01:03 판

1 개요

SWEA 2007 패턴 마디의 길이
  • 입력값은 시작부터 반복되는 문자열이다.
  • 마지막에는 도중에 끊길 수 있다.
  • 내부적으로는 반복이 없는 반복단위를 찾는 문제이다.
  • 패턴의 길이는 10이하이므로 짧은 단위부터 조사하여 가장 짧은 것을 찾는다.
SW Expert 아카데미
# 문제 풀이

틀:SWEA 난이도 2-1

2 C++

#include <iostream>
using namespace std;
char str[31];
int get_repeating_size() {
	for(int size=2; size<=10; size++) {
		bool repeating = true;
		for(int i=0; i<size; i++) {
			if(str[i] != str[i+size]) {
				repeating = false;
				break;
			}
		}
		if( repeating ) return size;
	}
	return 1;
}
int main() {
	int T;
	scanf("%d", &T);
	for (int tc=1; tc<=T; tc++) {
		scanf("%s", str);
		printf("#%d %d\n", tc, get_repeating_size());
	}
}

3 Java

import java.util.Scanner;
import java.util.regex.Pattern;
class Solution {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for(int t=1; t<=T; t++) {
            String s = sc.next();
            int wavelength = 0;
            for(int i=1; i<10; i++) {
                String sub = s.substring(0,i);
                String subNext = s.substring(i,i+i);
                if( sub.equals(subNext) ) {
                    wavelength = i;
                    break;
                }
            }
            System.out.format("#%d %d\n", t, wavelength);
        }
    }
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}