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

東工大プロコン2015 A ぼくの学生証

■■■問題■■■

とある大学に所属しているA君はある日、記憶喪失になってしまった。

学生証に書かれた学籍番号からA君の入学した年と身分を判定するプログラムを作るのがあなたの仕事である。

A君の所属している大学の学籍番号について、以下のルールがあることが知られている。

●長さ8の文字列である。
●最初の2字は数字だけで構成されており、入学した年の下2桁を表す。
●3文字目がBならば学士課程であることを、Mならば修士課程であることを、Dならば博士課程であることを表す。
●残りの5字は数字だけで構成されている。

■■■入力■■■

S

●1行目にA君の学生証に書かれた学籍番号を表す文字列Sが与えられる。
●Sは以下の制約を満たす。
●|S|=8。ここで|S|は文字列Sの長さを表す。
●3文字目はB、M、Dのいずれかである。
●3文字目以外は0, 1, 2, 3, 4, 5, 6, 7, 8, 9のいずれかの数字である。

■■■出力■■■

●A君の身分と入学年の下2桁を空白区切りで1行に出力せよ。改行を忘れないこと。
●身分について、学士課程ならばBachelorを、修士課程ならばMasterを、博士課程ならばDoctorを出力せよ。
●詳しくはサンプルを確認すること。


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("12B34567");
            //Bachelor 12
            //A君は12年入学の学士課程の学生であるようです
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("00M00000");
            //Master 00
            //A君は00年入学の修士課程の学生であるようです
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("13D10007");
            //Doctor 13
            //A君は13年入学の博士課程の学生であるようです
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

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

        if (S[2] == 'B') {
            Console.WriteLine("Bachelor {0}", S.Substring(0, 2));
        }
        if (S[2] == 'M') {
            Console.WriteLine("Master {0}", S.Substring(0, 2));
        }
        if (S[2] == 'D') {
            Console.WriteLine("Doctor {0}", S.Substring(0, 2));
        }
    }
}


解説

ナイーブに解いてます。