東大卒メーカー勤務がゆるっとセミリタイアを目指す

東大卒でメーカー勤務の私がセミリタイアするために考えたことや日々思うことをゆるっと書いていくブログです。独身男性です。お金の大切さや今後の生き方について伝えていけたらと思います。

AGC40で書いたコード

using System;

namespace Atcoder20191103
{
    
    class ProgramA
    {
        static void Main(string args)
        {
            
            //入力
            string input = Console.ReadLine();

            //準備
            ulong line = new ulong[10000000]; //<や>の続く数を格納する配列
            ulong count = 1; //カウントする数
            ulong count_line = 0; //続く数の場所を制御する
            ulong sum = 0;  //和を求める
            ulong start = 1; //最初の文字による比較するところの基準を決める


            //例外条件(<や>のみの場合)
            if(input.Length == 1)
            {
                Console.WriteLine("1");
                return; //ここで終了
            }

            //比較していくメイン
            for(int i = 1i < input.Length;i++)
            {
                //前と同じ場合は続く数を数える。続かない場合はその続いた数を入れて、カウントをリセットする
                if(input[i== input[i - 1])
                {
                    count++;
                }
                else
                {
                    line[count_line= count;
                    count = 1;
                    count_line++;
                }
              
               //最後のときは数えられていないので最後は必ず出力する
                if(i == input.Length - 1)
                {
                    line[count_line= count;
                    count_line++;
                }
            }

            //それぞれの要素の数を取り出し、1からその数までの和を足す
            for(ulong i = 0;i < count_line;i++)
            {
                ulong plus = line[i- 1;
                sum += (plus + 1* plus / 2;
            }

            //先頭がどっちかを見極めて、比較する数値がどちらかを見極める
            if(input[0== '>')
            {
                start = 2;
                sum += line[0];
            }

            //比較して最大値を求めて足す。
            for(ulong i = start;i <= count_line;i = i + 2)
            {
                if(line[i> line[i - 1])
                    sum += line[i];
                else
                    sum += line[i - 1];
            }

            //総和を出す。
            Console.WriteLine(sum);
        }
    }
            
}