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

12번째 줄: 12번째 줄:
==C++==
==C++==
<source lang='cpp'>
<source lang='cpp'>
#include <iostream>
using namespace std;
char str[31];
int get_reating_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_reating_size());
}
}
</source>
</source>



2019년 1월 24일 (목) 02:04 판

1 개요

SWEA 2007 패턴 마디의 길이
  • 입력값은 시작부터 반복되는 문자열이다.
  • 마지막에는 도중에 끊길 수 있다.
  • 가장 긴 반복패턴의 길이를 구하는 문제이다.
  • 내부적으로는 반복이 없어야 한다.
SW Expert 아카데미
# 문제 풀이

틀:SWEA 난이도 2-1

2 C++

#include <iostream>
using namespace std;
char str[31];
int get_reating_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_reating_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 }}