본문 바로가기
백준/구현

백준 17219 c++ "비밀번호 찾기" -PlusUltraCode-

by PlusUltraCode 2025. 9. 17.

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

[필자 사고]

간단한 구현 문제다.

필자는 map 자료구조를 이용하여 쉽게 url에 해당하는 비밀번호를 찾을 수 있도록 문제를 해결했다.

 

아래는 자세한 코드 해설이다.

[코드 해설]

Input 함수

  • 입력 처리 및 저장 역할을 합니다.
  1. 정수 N, M을 입력받음.
    • N: 저장할 사이트의 개수.
    • M: 찾을 사이트의 개수.
  2. for문으로 N번 반복하며 사이트 주소(url)와 비밀번호(password)를 입력받음.
  3. myMap[url] = password; 구문을 통해 map 컨테이너에 저장.
    • map은 key(여기서는 url)를 기준으로 자동 정렬되고,
    • 같은 url이 다시 들어오면 비밀번호가 덮어쓰기 됨.

Game_Start 함수

  • 비밀번호 검색 및 출력을 수행합니다.
  1. M번 반복하면서 찾고자 하는 사이트 주소(findUrl)를 입력받음.
  2. cout << myMap[findUrl]; 로 해당 주소의 비밀번호를 출력.
    • map의 [] 연산자는 키를 이용해 값을 바로 가져올 수 있음.
    • 입력된 주소가 반드시 저장된 상태라는 문제 조건을 전제로 동작.

main 함수

  1. ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); 로 빠른 입출력 설정.
  2. Input() 호출 → 사이트 정보 입력 및 저장.
  3. Game_Start() 호출 → 질의된 사이트의 비밀번호를 찾아 차례대로 출력.

[소스 코드]

#include <iostream>
#include <vector>
#include <cstring>
#include <map>
using namespace std;

int N, M;
map<string, string> myMap;

void Input() {
	cin >> N >> M;

	for (int i = 0; i < N; i++) {
		string url, password;
		cin >> url >> password;

		myMap[url] = password;
	}


}

void Game_Start() {
	for (int i = 0; i < M; i++) {
		string findUrl;
		cin >> findUrl;
		cout << myMap[findUrl] << "\n";
	}
}

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	Input();
	Game_Start();
}