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

 
(사용자 2명의 중간 판 5개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;SWEA 2007 패턴 마디의 길이
{{SWEA|난이도=2}}
* 입력값은 시작부터 반복되는 문자열이다.
* 입력값은 시작부터 반복되는 문자열이다.
* 마지막에는 도중에 끊길 수 있다.
* 마지막에는 도중에 끊길 수 있다.
* 가장 긴 반복패턴의 길이를 구하는 문제이다.
* 내부적으로는 반복이 없는 반복단위를 찾는 문제이다.
* 내부적으로는 반복이 없어야 한다.
* 패턴의 길이는 10이하이므로 짧은 단위부터 조사하여 가장 짧은 것을 찾는다.  
 
{{SWEA 헤더}}
{{SWEA 난이도 2-1}}
|}


==C++==
==C++==
<source lang='cpp'>
<syntaxhighlight lang='cpp'>
#include <iostream>
#include <iostream>
using namespace std;
using namespace std;
char str[31];
char str[31];
int get_reating_size() {
int get_repeating_size() {
for(int size=2; size<=10; size++) {
for(int size=2; size<=10; size++) {
bool repeating = true;
bool repeating = true;
32번째 줄: 28번째 줄:
scanf("%d", &T);
scanf("%d", &T);
for (int tc=1; tc<=T; tc++) {
for (int tc=1; tc<=T; tc++) {
scanf(" %s", str);
scanf("%s", str);
printf("#%d %d\n", tc, get_reating_size());
printf("#%d %d\n", tc, get_repeating_size());
}
}
}
}
</source>
</syntaxhighlight>


==Java==
==Java==
<source lang='java'>
<syntaxhighlight lang='java'>
import java.util.Scanner;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Pattern;
61번째 줄: 57번째 줄:
     }
     }
}
}
</source>
</syntaxhighlight>

2023년 8월 25일 (금) 01:44 기준 최신판

1 개요[ | ]

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

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 }}