結果

問題 No.3395 Range Flipping Game
コンテスト
ユーザー EvbCFfp1XB
提出日時 2025-12-02 23:29:19
言語 Java
(openjdk 23)
結果
AC  
実行時間 1,398 ms / 2,000 ms
コード長 5,999 bytes
コンパイル時間 2,930 ms
コンパイル使用メモリ 82,236 KB
実行使用メモリ 65,824 KB
最終ジャッジ日時 2025-12-02 23:29:38
合計ジャッジ時間 17,928 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try (final Scanner in = new Scanner(System.in)) {
            int t = in.nextInt();
            for (int i = 0; i < t; i++) {
                int n = in.nextInt();
                String s = in.next();

                if (n == 1) {
                    System.out.println("B");
                } else if (n == 2) {
                    // -> AA -> BB
                    // -> AB -> BB
                    // -> BA -> BB
                    // -> BB -> BB
                    System.out.println("BB");
                } else {
                    if (s.charAt(0) == 'A') {
                        if (s.charAt(1) == 'A') {
                            if (s.charAt(2) == 'A') {
                                // AA(A.*) -> ABAA -> BBAA
                                System.out.println("BB" + s.substring(2));
                            } else {
                                // AA(B+)(.*) -> ABAA -> BBAA
                                StringBuilder sb = new StringBuilder();
                                boolean change = false;
                                for (int j = 2; j < s.length(); j++) {
                                    if (!change && s.charAt(j) == 'B') {
                                        sb.append("A");
                                    } else {
                                        change = true;
                                        sb.append(s.charAt(j));
                                    }
                                }
                                System.out.println("BB" + sb.toString());
                            }
                        } else {
                            if (s.charAt(2) == 'A') {
                                // ABAA -> ABAA -> BBAA
                                // ABAB -> ABAA -> BBAA
                                StringBuilder sb = new StringBuilder();
                                int change = 0;
                                for (int j = 3; j < s.length(); j++) {
                                    if (change == 0) {
                                        if (s.charAt(j) == 'A') {
                                            sb.append("A");
                                        } else {
                                            change = 1;
                                        }
                                    }
                                    if (change == 1) {
                                        if (s.charAt(j) == 'B') {
                                            sb.append("A");
                                        } else {
                                            change = 2;
                                        }
                                    }
                                    if (change == 2) {
                                        sb.append(s.charAt(j));
                                    }
                                }
                                System.out.println("BBA" + sb.toString());
                            } else {
                                // ABBA -> ABAA -> BBAA
                                // ABBB -> ABAA -> BBAA
                                StringBuilder sb = new StringBuilder();
                                int change = 1;
                                for (int j = 2; j < s.length(); j++) {
                                    if (change == 1) {
                                        if (s.charAt(j) == 'B') {
                                            sb.append("A");
                                        } else {
                                            change = 2;
                                        }
                                    }
                                    if (change == 2) {
                                        sb.append(s.charAt(j));
                                    }
                                }
                                System.out.println("BB" + sb.toString());
                            }
                        }
                    } else {
                        if (s.charAt(1) == 'A') {
                            if (s.charAt(2) == 'A') {
                                // BAAA -> ABAA -> BBAA
                                // BAAB -> ABAB -> BBAB
                                System.out.println("BB" + s.substring(2));
                            } else {
                                // BABA -> ABAA -> BBAA
                                // BABB -> ABAA -> BBAA
                                StringBuilder sb = new StringBuilder();
                                int change = 1;
                                for (int j = 2; j < s.length(); j++) {
                                    if (change == 1) {
                                        if (s.charAt(j) == 'B') {
                                            sb.append("A");
                                        } else {
                                            change = 2;
                                        }
                                    }
                                    if (change == 2) {
                                        sb.append(s.charAt(j));
                                    }
                                }
                                System.out.println("BB" + sb.toString());
                            }
                        } else {
                            if (s.charAt(2) == 'A') {
                                // BBAA -> ABAA -> BBAA
                                // BBAB -> ABAB -> BBAB
                                System.out.println(s);
                            } else {
                                // BBBA -> ABBA -> BBBA
                                // BBBB -> BBBB -> BBBB
                                System.out.println(s);
                            }
                        }
                    }
                }
            }
        }
    }
}
0