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

 

17219번: 비밀번호 찾기

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

www.acmicpc.net

코드설명

HashMap(해시맵) 문제입니다.

 

해시맵을 활용하여 조회를 O(1) 만에 하므로 시간초과를 피할 수 있습니다.

입력 데이터가 많아서 시간이 오래걸릴 수 있는데 그럴 경우에는 JAVA에서 StringBuilder를 사용합니다.

System.out.println()은 Synchronized 동기화 코드가 붙어있어서 느립니다.

 

코드

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

public class Main {
	public static int N, M;
	public static HashMap<String, String> hashmap = new HashMap<String, String>();
	public static int answer = 0;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		for(int i=0;i<N;i++) {
			st = new StringTokenizer(br.readLine());
			String a = st.nextToken();
			String b = st.nextToken();
			hashmap.put(a,  b);
		}
		
		for(int i=0;i<M;i++) {
			st = new StringTokenizer(br.readLine());
			String a = st.nextToken();
			System.out.println(hashmap.get(a));
		}
//		System.out.println(answer);
	}
}

+ Recent posts