Codingame『CG Maroc - MIME type』

パントマイムのすべて


 MIMEっていう聞いたことがある(しかし理解してない)ものをどうこうして(?)ファイルタイプを調べるゲーム。
ファイル名 → 拡張子get → 拡張子からMIMEget
という流れ。


 ちなみにHashtableを初めて使った。
ArrayとListとArraylistがあれば十分だと思ってた。
Hashtable…なんというか、ちょっと便利。

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
    static void Main(string[] args)
    {
        int N = int.Parse(Console.ReadLine()); // Number of elements which make up the association table.
        int Q = int.Parse(Console.ReadLine()); // Number Q of file names to be analyzed.
        Console.Error.WriteLine("N:"+N);       //要素数
        Console.Error.WriteLine("Q:"+Q);       //ファイル数
        
        Hashtable ext_mt = new Hashtable();    //拡張子とMIMEのハッシュテーブル
        
        for (int i = 0; i < N; i++)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            string EXT = inputs[0].ToLower(); // file extension
            string MT = inputs[1]; // MIME type.
            Console.Error.WriteLine("EXT MT : {0} {1}",EXT,MT);
            
            ext_mt.Add(EXT,MT); //ハッシュテーブルに拡張子とMIMEを追加
        }
        
        for (int i = 0; i < Q; i++)
        {
            string FNAME = Console.ReadLine();        // One file name per line.
            string[] fs = FNAME.Split('.');           //ファイル名を'.'で分割
            string fext =  fs[fs.Length-1].ToLower(); //拡張子を小文字化して取得
            
            //ファイル名と拡張子がそろっているか、拡張子はhashtableに存在するか
            if(fs.Length >= 2 && ext_mt.ContainsKey(fext)) { 
                Console.WriteLine(ext_mt[fext]); //MIMEを出力
            }
            else {
                Console.WriteLine("UNKNOWN");    //ない場合
            }
        }

        // Write an action using Console.WriteLine()
        // To debug: Console.Error.WriteLine("Debug messages...");

        //Console.WriteLine("UNKNOWN"); // For each of the Q filenames, display on a line the corresponding MIME type. If there is no corresponding type, then display UNKNOWN.
    }
}