최대 1 분 소요

문제 링크

풀이 과정

  1. 시간 제한이 핵심인 문제이다.
  2. 입출력을 Stream객체를 통해 구현하여 시간을 절약한다.
  3. 이름을 통하여 포켓몬 번호를 찾기 위해 Dictionary<string,int>를 이용하여 키(이름)값으로 밸류(포켓몬 번호)를 찾는다
  4. C#의 Dictionary는 value로 key값을 찾는 기능을 지원하지 않기 때문에 간단한 String[]을 통해 번호로 포켓몬 이름을 알아낸다.

결과

internal class Program
{
    static void Main(string[] args)
    {
        StreamReader sr = new StreamReader(Console.OpenStandardInput());
        StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

        string[] s = sr.ReadLine().Split(" ");

        int N = int.Parse(s[0]);
        int M = int.Parse(s[1]);

        // 이름으로 번호를 알아내기 위한 딕셔너리
        Dictionary<string, int> pocketmonDic = new Dictionary<string, int>();
        // 포켓몬 번호로 이름을 알아내기 위한 String 배열
        string[] names = new string[N];
        
        // 도감에 작성될 포켓몬 정보를 입력받음
        for (int i = 0; i < N; i++)
        {
            string name = sr.ReadLine();
            pocketmonDic[name] = i + 1;
            names[i] = name;
        }

        // 도감을 통해 검색함
        for (int i = 0;i < M; i++)
        {
            string input = sr.ReadLine();
            // 숫자로 값이 들어오면 포켓몬 이름을 출력
            if (int.TryParse(input,out int num))
            {
                sw.WriteLine(names[num - 1]);
            }
            // 숫자가 아니라면 포켓몬 이름이므로 포켓몬 이름을 출력
            else
            {
                sw.WriteLine(pocketmonDic[input]);
            }
        }

        sr.Close();
        sw.Close();
    }
}

댓글남기기