Shiny Sky Blue Star

백준 문제 풀이/백준 (JAVA)

JAVA 백준 17219 비밀번호 찾기 (집합과 맵)

gamja00 2026. 1. 12. 12:25

 

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

 


문제

  1. 첫째 줄에 저장된 사이트 주소의 수 N (1 <= N <= 100000)과 비밀번호를 찾으려는 사이트의 주소 M (1 <= M <= 100000)이 공백으로 구분되어 입력된다.
  2. 둘째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번호가 공백으로 구분되어 입력된다.
  3. 사이트 주소 (1 <= 사이트의 주소.length() <= 100000) 는 알파벳 소문자, 대문자, 대시, 마침표로 이루어져 있고 중복되지 않는다.
  4. 비밀번호 (1 <= 비밀번호.length() <= 100000) 는 알파벳 대문자로만 이루어져 있다.
  5. N+2번째 줄부터 M개의 줄에 걸쳐 비밀번호를 찾으려는 사이트의 주소가 각 줄에 입력된다. 반드시 이미 저장된 사이트의 주소가 입력됨.

 

 

 

 

 

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

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());

        HashMap<String, String> hash = new HashMap<>();

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            hash.put(st.nextToken(), st.nextToken());
        }


        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < M; i++) {
            String s = br.readLine();
            sb.append(hash.get(s)).append("\n");
        }

        System.out.println(sb);

        br.close();
    }
}

 

간단하게 해시맵을 이용하여 사이트 주소를 Key로, 비밀번호를 Value로 받아 저장한다.

필요한 사이트의 주소를 Key로 검색하여 Value의 값을 얻어내면 해당 사이트의 비밀번호를 간단하게 얻어낼 수 있다.

 

 

 

 

 

 

버퍼를 사용한 뒤에 프로그램 종료 시 닫아야 되는데 항상 이 부분을 깜빡했다.

앞으로라도 닫아야겠다.