데이터 엔지니어링 정복/Algorithm
[자료구조] 백준 - 비밀번호 찾기
noohhee
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
반응형