ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

AtCoder Beginner Contest 124 A - Buttons

昨日はTOEICを受けてきて長文アレルギーを再認識しました、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/abc124)にて開催されました、AtCoder Beginner Contest 124 A問題「A - Buttons」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

2 個のボタンがあり、大きさはそれぞれ A , B です。

大きさ X のボタンを押すと、 X 枚のコインを獲得し、そのボタンの大きさが 1 小さくなります。

あなたは、いずれかのボタンを押すことを 2 回行います。 同じボタンを 2 回押しても構いません。

最大で何枚のコインを獲得できるでしょうか。

2.制約

  • 入力は全て整数である。
  • 3 ≤ A , B ≤ 20

3.入力例

  • 入力
6 6
  • 出力
12

4.初見の感想

  • 基本的には大きいボタンを連続で押しておけばよさそう(1しか減らないので)
  • 両方同じ高さの時は両方を押した方がよさそう

5.学びポイント

  • 僕はifで条件分岐しましたが、Max関数を使う方法もあるようですね!

6.コードの簡単な解説

  • まず、入力の値のパースを行う
        string[] input = Console.ReadLine().Split(' ');
        int[] button = new int[2];
        button[0] = int.Parse(input[0]);
        button[1] = int.Parse(input[1]);
  • ボタン1が大きい時はボタン1を連続で押す
        if (button[1]>button[0]) { Console.WriteLine(2*button[1]-1); }
  • ボタンが同じ高さなら両方押す
        else if(button[1] == button[0]) { Console.WriteLine(2 * button[1]); }
  • ボタン0が大きい時はボタン0を連続で押す
        else { Console.WriteLine(2 * button[0] - 1); }

7.全コード

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split(' ');
        int[] button = new int[2];
        button[0] = int.Parse(input[0]);
        button[1] = int.Parse(input[1]);
        if (button[1]>button[0]) { Console.WriteLine(2*button[1]-1); }
        else if(button[1] == button[0]) { Console.WriteLine(2 * button[1]); }
        else { Console.WriteLine(2 * button[0] - 1); }
    }
}

8.最後に

この問題は2:50で解けたので上出来かな?と思ってます