[伯俊]#1013 Contact
質問する
無限に広がる宇宙に人間だけが一人でいるとしたら、それは本当に悲しいことではないでしょうか.
プエルトリコのアレシボにあるアレシボ望遠鏡(Arecbo radio望遠鏡)は、数十年も存在しない可能性のある外部文明からの電波を受信するため、夜空を眺めている.
この望遠鏡で収集された電波の中で、自然に起こりにくいパターンを見つけ、これを証拠に外星文明の存在を判断しようとする努力が続いているが、まだ発見されていない.韓国天文学界のプライドである金ドンヒョク博士は、国内技術でこのような探査を行うために、以下の電波標識を基準にしている.
伝播の基本単位は,{0,1},x+()が任意の数(少なくとも1つ)xの繰返しからなる伝播の集合を表す2つの構成からなる.
(xyx)+()は括弧内のxyxの繰返し伝搬の集合である.以下に、理解を助ける例を示します.
入力
入力された第1行は、試験例の個数Tを与える.次の行から、各テストケースについて、伝播を表す{0,1}のみを含む文字列にスペースはありません.文字列長は(1≦N≦200)です.
しゅつりょく
各テストケースについて,与えられた伝播パターンが問題で提案されたパターンであり,「YES」でなければ「NO」が出力される.出力文字列はすべて大文字で構成されています.
入力例1
3
10010111
011000100110001
0110001011001
サンプル出力1
NO
NO
YES
に答える
この問題は正規表現で解くことができる.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Pattern pattern = Pattern.compile("^(100+1+|01)+$");
Matcher matcher;
for(int i=0; i<N; i++) {
String input = br.readLine();
matcher = pattern.matcher(input);
if(matcher.matches())
System.out.println("YES");
else
System.out.println("NO");
}
}
}
Reference
この問題について([伯俊]#1013 Contact), 我々は、より多くの情報をここで見つけました https://velog.io/@pss407/백준1013-Contactテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol