結果
問題 | No.380 悪の台本 |
ユーザー |
|
提出日時 | 2016-06-16 18:58:23 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 982 ms / 1,000 ms |
コード長 | 2,428 bytes |
コンパイル時間 | 2,584 ms |
コンパイル使用メモリ | 79,816 KB |
実行使用メモリ | 54,568 KB |
最終ジャッジ日時 | 2024-11-06 22:35:08 |
合計ジャッジ時間 | 6,419 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 8 |
ソースコード
package yukicoder;import java.util.HashSet;import java.util.Scanner;import java.util.Set;public class Main {public static void main(String[] args) {new Main().solver();}Set lowcase = new HashSet<>();Set nonsymbol = new HashSet<>();String digi_end = "nyo";String petit_end = "nyu";String gema_end = "gema";String piyo_end = "pyo";@SuppressWarnings("unchecked")void solver() {String d = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for (int i = 0; i < d.length(); i++) {nonsymbol.add(d.charAt(i));}Scanner sc = new Scanner(System.in);while (sc.hasNextLine()) {String line = sc.nextLine();if (isCorrect(line)) {System.out.println("CORRECT (maybe)");} else {System.out.println("WRONG!");}}}String[] name = { "digi", "petit", "rabi", "gema", "piyo" };boolean isCorrect(String line) {int num = -1;out: for (int i = 0; i < 5; i++) {for (int j = 0; j < line.length() && j < name[i].length(); j++) {if (line.charAt(j) != name[i].charAt(j)) {break;}if (j == name[i].length() - 1) {num = i;line = line.substring(name[i].length()).toLowerCase();break out;}}}if (line.length() == 0)return false;if (line.charAt(0) != ' ')return false;line=line.substring(1);if (num == 0) {if (bottom(digi_end, line)) {return true;}} else if (num == 1) {if (bottom(petit_end, line)) {return true;}} else if (num == 2) {for (int i = 0; i < line.length(); i++) {if (nonsymbol.contains(line.charAt(i))) {return true;}}} else if (num == 3) {if (bottom(gema_end, line)) {return true;}} else if (num == 4) {if (bottom(piyo_end, line)) {return true;}} else if (num == -1) {return false;} else {throw new AssertionError("error");}return false;}boolean bottom(String bottom, String line) {int n = bottom.length();int len = line.length();for (int i = 0; i < 4; i++) {boolean f = false;for (int j = len - n -i; j >= 0 && j < len - i; j++) {f = true;if (bottom.charAt(j - len + n + i) != line.charAt(j)) {f = false;break;}}for (int j = len - i; j >= 0 && j < len; j++) {if (nonsymbol.contains(line.charAt(j))) {f = false;break;}}if (f) {return true;}}return false;}}