본문 바로가기
백준

[백준] 17219번 : 비밀번호 찾기 – JAVA [자바]

by Hongwoo 2022. 4. 21.
반응형

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

 

17219번: 비밀번호 찾기

첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 17219번 비밀번호 찾기는 실버 4 난이도의 맵을 이용한 자료구조 문제이다. 이 문제는 그리고 한양대학교의 2019 HEPC - Maven League에 나온 문제이기도 하다.

 

이 문제에서는 웹사이트 개수 n개, 그리고 찾아야 하는 비밀번호 m개가 주어진다. 그리고 n개의 줄에 걸쳐서 사이트와 비밀번호가 주어지고 m개의 줄에 걸쳐서 비밀번호를 찾아야 하는 웹사이트들이 주어진다. 비밀번호를 출력하고 순서대로 비밀번호들만 출력해주면 된다.

 

우선 맵을 만든다. 키(Key)는 String형으로 저장하고 값(Value)도 마찬가지로 String형으로 저장할 것이다. 키로는 웹사이트를 저장할 것이고 값으로는 비밀번호를 저장할 것이다. 

 

m개의 줄에 걸쳐서 찾아야 하는 웹사이트들이 주어졌을 때 map.get() 함수를 이용해서 비밀번호를 찾아서 출력해주기만 하면 되는 쉬운 문제이다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        Map<String, String> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            String site = st.nextToken();
            String passwd = st.nextToken();
            map.put(site,passwd);
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < m; i++) {
            String site = br.readLine();
            sb.append(map.get(site) + "\n");
        }
        System.out.print(sb);
    }
}

 


  • 후기

맵을 이용 하면 되게 쉽고 빠르게 풀 수 있는 문제이다.

 

반응형

댓글