Machineboy空

連想配列(query) C#編 본문

Computer/Coding Test

連想配列(query) C#編

안녕도라 2025. 6. 10. 11:43

문제요약

key-value쌍으로 되어있는 명단에 대한 쿼리

  • call
  • leave
  • join

난이도

Rank B


풀이 포인트

  • Dictionary ,Pair

REVIEW

 
순간 Dictionary가 키와 밸류로 이루어진 여러 쌍을 포함할 수 있다는 것을 간과해서, 
C++의 pair와 헷갈려 Dictionary의 List를 만들어 버려 시간 초과가 났다.

Dictionary<int, string> students = new Dictionary<int, string>
        {
            { 101, "Alice" },
            { 102, "Bob" },
            { 103, "Charlie" }
        };

 


CODE

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var nk = Console.ReadLine().Split();
        int N = int.Parse(nk[0]);
        int K = int.Parse(nk[1]);

        Dictionary<int, string> roster = new Dictionary<int, string>();

        for (int i = 0; i < N; i++)
        {
            var parts = Console.ReadLine().Split();
            int num = int.Parse(parts[0]);
            string name = parts[1];
            roster[num] = name;
        }

        for (int i = 0; i < K; i++)
        {
            var commandLine = Console.ReadLine().Split();
            string command = commandLine[0];

            if (command == "join")
            {
                int num = int.Parse(commandLine[1]);
                string name = commandLine[2];
                roster[num] = name;
            }
            else if (command == "leave")
            {
                int num = int.Parse(commandLine[1]);
                roster.Remove(num);
            }
            else 
            {
                int num = int.Parse(commandLine[1]);
                if (roster.ContainsKey(num))
                    Console.WriteLine(roster[num]);
                else
                    Console.WriteLine("Unknown");
            }
        }
    }
}