東大卒のお金やりくり奮闘記~株、家計、趣味、経済~

東大卒でメーカー勤務の私がセミリタイアするために投資などを頑張っていこうという趣旨で始めたブログです。既婚男性です。株、家計、趣味、経済の話をメインにゆるゆる話します。

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);
        }
    }
            
}