백준 17219번 비밀번호 찾기 (C#)

김보근·2025년 7월 31일

백준

목록 보기
52/62

백준 17219번 비밀번호 찾기 (C#)


https://www.acmicpc.net/problem/17219

문제 요약

사이트 주소와 비밀번호가 주어지고,
나중에 특정 사이트의 주소를 입력받으면
해당 사이트의 비밀번호를 출력하는 문제다.

입력 형식은 다음과 같다:

  1. 첫 줄에 저장할 사이트 수 N과 찾을 사이트 수 M이 공백으로 구분되어 주어진다.

  2. 이어지는 N줄에는 주소 비밀번호 형식으로 저장할 정보가 들어온다.

  3. 마지막 M줄에는 비밀번호를 찾으려는 사이트 주소가 주어진다.

내가 헷갈렸던 점

처음에는 16개의 주소 + 비밀번호가 주어지면,
그중에서 4개를 건너뛰거나 특정 규칙에 따라 출력하는 줄로 착각했다.
그래서 정답으로 기대한 출력값이 실제 문제의 요구와 달라져 혼란이 왔다.

하지만 문제를 다시 읽어보니,
16개는 전부 단순 저장용이고
그 후 4개는 조회용 주소라는 걸 뒤늦게 정확히 이해했다.

풀이 방법

Dictionary(Dictionary<string, string>)를 활용하여 사이트 주소를 key로, 비밀번호를 value로 저장한다.

이후 찾으려는 주소가 주어졌을 때 dict[주소]로 비밀번호를 바로 출력한다.

작성한 코드

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace backjoon
{
    internal class Program
    {
        static void Main()
        {
            string[] input = Console.ReadLine().Split();
            int n = int.Parse(input[0]); // 저장할 주소 수
            int m = int.Parse(input[1]); // 찾을 주소 수

            Dictionary<string, string> map = new Dictionary<string, string>();

            // N개의 주소-비밀번호 입력
            for (int i = 0; i < n; i++)
            {
                string[] namePassword = Console.ReadLine().Split();
                map[namePassword[0]] = namePassword[1];
            }

            // M개의 검색 주소에 대해 비밀번호 출력
            for (int i = 0; i < m; i++)
            {
                string site = Console.ReadLine();
                Console.WriteLine(map[site]);
            }


        }
    }
}

배운 점

문제에서 주어진 입력 구조를 정확히 이해하는 것이 정말 중요하다.

Dictionary는 이런 "검색형 문제"에서 굉장히 유용하게 쓰인다.

profile
게임개발자꿈나무

0개의 댓글