トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

No.289 数字を全て足そう

■■■問題■■■

文字列Sが与えられるので、その中のそれぞれの数字を1桁の数値とみなして、
全ての合計値を求めてください。

例えば1test23という文字列の数字の合計値は1+2+3=6となる。

■■■入力■■■

S

1 <= |S| <= 1万

|S| は文字列Sの長さである。
文字列Sは半角英数字のみで構成される。

■■■出力■■■

各数字の合計値を出力してください。


C#のソース

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

class Program
{
    static string InputPattern = "Input1";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("1test23");
            //6
            //1+2+3=6となります。
            //1+23ではないことに注意
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("2015");
            //8
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("1a2b3c4d5e6f7g8h90");
            //45
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        string S = InputList[0];

        Func<char, int> SumFunc = pChar =>
        {
            if ('1' <= pChar && pChar <= '9')
                return pChar - '1' + 1;
            return 0;
        };

        Console.WriteLine(S.Sum(X => SumFunc(X)));
    }
}


解説

ナイーブに実装してます。