taiPyのお悩み解決ブログ

日々の発見をまとめます!

Javaの解答例:A - Spoiler , トヨタ自動車プログラミングコンテスト2024#3(AtCoder Beginner Contest 344)

はじめに

自分用の備忘録

問題

A - Spoiler , トヨタ自動車プログラミングコンテスト2024#3(AtCoder Beginner Contest 344)

解答例

import java.util.*;

class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String S = sc.next();

        String[] splitedStrings = S.split("\\|");

        for (int i = 0; i < splitedStrings.length; i++) {
// ここで真ん中の文字を抜くという処理をしています。
            if (i != 1) {
                System.out.print(splitedStrings[i]);   
            }
        }
    }
}

ポイント

特にないですかね。。 強いて言うなら、splitするときの引数は気を付けないといけないかもです!

少し解説。わかりにくいですが、、。

S.split("\|"); は、Javaの文字列 S をパイプ記号 | で分割する操作です。ここで、\| は正規表現としてパイプ記号をエスケープしていることに注意してください。

具体的には、次のように説明できます:

S は分割したい文字列です。 split("\|") は、S をパイプ記号 | で分割するメソッドです。 例えば、以下のような文字列があった場合:

String S = "apple|banana|cherry";
String[] result = S.split("\\|");

result 配列には次のような要素が格納されます:

result[0] は "apple" result[1] は "banana" result[2] は "cherry"

解答例 その2

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        int x = s.indexOf("|");  // 先頭から見て最初に '|' が現れる位置
        int y = s.lastIndexOf("|");  // 末尾から見て最初に '|' が現れる位置
        System.out.println(s.substring(0, x) + s.substring(y + 1));
        scanner.close();
    }
}

解答例 その2 解説

このJavaコードは、ユーザーからの入力文字列に対して特定の操作を行うプログラムです。以下に、各行の詳細な説明を提供します。

  1. import java.util.Scanner;
    JavaのScannerクラスをインポートします。これは、ユーザーからの入力を読み取るために使用されます。

  2. public class Main {
    Mainという名前の公開クラスを定義します。Javaプログラムは、このようなクラス内部で実行されます。

  3. public static void main(String[] args) {
    Javaプログラムのエントリーポイントであるmainメソッドを定義します。このメソッドは、プログラムが開始するときに最初に呼び出されます。

  4. Scanner scanner = new Scanner(System.in);
    新しいScannerオブジェクトを作成し、それをscannerという名前の変数に割り当てます。このオブジェクトは、標準入力(通常はキーボード)からの入力を読み取るために使用されます。

  5. String s = scanner.next();
    ユーザーからの次の入力を読み取り、それをsという名前の文字列に保存します。

  6. int x = s.indexOf("|");
    文字列s内で最初に'|'が現れる位置を見つけ、そのインデックスをxという名前の整数に保存します。

  7. int y = s.lastIndexOf("|");
    文字列s内で最後に'|'が現れる位置を見つけ、そのインデックスをyという名前の整数に保存します。

  8. System.out.println(s.substring(0, x) + s.substring(y + 1));
    文字列sの最初の部分(インデックス0からxまで)と最後の部分(インデックスy+1から最後まで)を取り出し、それらを連結して出力します。

  9. scanner.close();
    Scannerオブジェ

参考文献

atcoder.jp