LoginSignup
0
0

More than 5 years have passed since last update.

AOJのSmall, Large, or Equalを解いてみた

Posted at

こんにちわ
グローバルセンス株式会社のskanehiraです。

以前、こちらの記事で紹介したAOJですが
タイトルの問題を解いてみました。

簡単なアルゴリズムでありますが
読みやすく効率よくを意識しながら組んでみました。

問題

問題はこちらになります。
image.png

単純な問題で
入力した数字の大小を比較して出力するだけです。

aとbの位置が変わらないので
記号のみが条件によって変わるイメージですね。

ソース

一応判定では正解なので載せます。
もっと良い書き方無いかな…

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] line = scan.nextLine().split(" ");

        int[] inputs = new int[2];
        int input;

        // -1,000 ≤ a, b ≤ 1,000
        for (int i = 0; i < line.length; i++) {
            input = Integer.parseInt(line[i]);
            if (input < -1000 || 1000 < input ) System.exit(-1);
            inputs[i] = input;
        }

        int a = inputs[0];
        int b = inputs[1];

        System.out.println("a " + (a < b ? "<": a > b ? ">" : "==") + " b" );

        scan.close();
    }

}

三項演算子を2重で使っているので多少わかりづらいかもしれないが、
これでだいぶ短縮できたのではないかなと思います。

判定処理をメソッドにするなら以下の様になると思います。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] line = scan.nextLine().split(" ");

        int[] inputs = new int[2];
        int input;

        // -1,000 ≤ a, b ≤ 1,000
        for (int i = 0; i < line.length; i++) {
            input = Integer.parseInt(line[i]);
            if (input < -1000 || 1000 < input ) System.exit(-1);
            inputs[i] = input;
        }

        System.out.println("a " + getSymbol(inputs[0], inputs[1]) + " b" );

        scan.close();
    }

    public static String getSymbol(int a, int b) {
        String symbol = "==";

        if (a < b) {
            symbol = "<";
        } else if (a > b){
            symbol = ">";
        }

        return symbol;
    }
}

最後に

入力の部分、もう少し省けそうな気がしますが
今のところ思い付きません!

こうすると
 もっと短縮できる
 メモリ使用量が減る
 実行時間が減る
などのアドバイスを頂けたら嬉しいですm(_ _)m

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0