Problem:
A： A-Z-

問題

26 マスの円環状のボードがあり、各マスには大文字のアルファベット 1 文字が、アルファベット順に時計回りに書かれています。すなわち、 'A' のマスの時計回り隣は 'B' のマスで、 'B' のマスの隣は 'C' のマスで、・・・、 'Z' のマスの時計回り隣は 'A' のマスです。

また、ボードには 'A' のマスに駒が 1 つ置かれています。

あなたは、文字列 S を受け取り、 S の先頭から 1 文字ずつ見て駒を操作します。 i 回目の操作は以下のようになります。

その時点で駒のあるマスから S の i 文字目のアルファベットのマスを目指して、駒を時計回りに 1 マスずつ移動させる。このとき少なくとも 1 マスは移動するとする。したがって、例えば 'A' のマスから 'A' のマスに移動する際は、ボードを 1 周しなくてはならない。

上記の操作の結果、駒が 'A' のマスを何回踏んだかを答えてください。なお「 'A' のマスを踏む」とは、 'Z' のマスから 'A' のマスに駒を進めることを言います。

入力形式

入力は 1 行で与えられる。

S

S はあなたが受け取る文字列を表す。

制約

1 \leq |S| \leq 100

S は英大文字のみで構成される。

出力形式

'A' のマスを何回踏んだかを 1 行で出力せよ。

入力例1

AIZU

出力例1

2

A -> A (ここで 1 回)

A -> I (ここまで 1 回)

I -> Z (ここまで 1 回)

Z -> U (ここまで 2 回)

入力例2

HOKKAIDO

出力例2

4

Solution in C# (judge verdict: Accepted)

using System;

public class hello
{
    public static void Main()
    {
        var s = Console.ReadLine().Trim();
        Console.WriteLine(GetAns(s));
    }
    public static int GetAns(string s)
    {
        var count = 0;
        var start = 0;
        var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        foreach (var x in s)
        {
            var t = a.IndexOf(x);
            if (t <= start) count++;
            start = t;
        }
        return count;
    }
}