지구정복

[자료구조] 백준 - 비밀번호 찾기 본문

데이터 엔지니어링 정복/Algorithm

[자료구조] 백준 - 비밀번호 찾기

nooh._.jl 2021. 8. 5. 11:59
728x90
반응형

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

 

17219번: 비밀번호 찾기

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

www.acmicpc.net

 

-문제해설

해시맵을 이용하면 간단하게 풀 수 있는 문제이다. 

키에 사이트주소, 값에 비밀번호를 삽입하고

 

비밀번호를 알고 싶은 사이트 주소가 입력되면

StringBuffer에 키인 사이트 주소에 해당되는 비밀번호를 저장해주고

마지막에 StringBuffer를 출력하면 정답이다.

 

 

파이썬의 경우 딕셔너리 구조를 이용해서 키, 값을 삽입했다.

 

 

-자바

package dataStructure;

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

public class BJ17219 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		st = new StringTokenizer( br.readLine() );
		int n = Integer.parseInt( st.nextToken() );
		int m = Integer.parseInt( st.nextToken() );
		
		HashMap<String, String> hs = new HashMap<String, String>();		
		for( int i=0; i<n; i++ ) {
			st = new StringTokenizer( br.readLine() );
			hs.put( st.nextToken(), st.nextToken() );
		}
		
		StringBuffer sb = new StringBuffer();
		String tmp = "";
		for( int i=0; i<m; i++ ) {
			tmp = br.readLine();
			sb.append( hs.get(tmp) ).append( "\n" );
		}
		System.out.println( sb );
	}
}

 

-파이썬

import sys
l = sys.stdin.readline
n, m = map(int, l().split() )

d = {}
for i in range( n ):
    site, pas = l().split()
    d[site] = pas
print( "\n".join( d[ i.strip() ] for i in sys.stdin ) )

 

728x90
반응형
Comments