백준 10816번: 숫자 카드2 [이분 탐색][자료구조] - Java :: 매운코딩
728x90
300x250

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

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0

www.acmicpc.net

System.out.print()를 사용했더니 시간초과가 났다. 

그래서 BufferedWriter로 바꾸었더니 성공~

 

<Java 코드>

728x90
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		//System.setIn(new FileInputStream("Test.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
		
		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; i++) {
			int num = Integer.parseInt(st.nextToken());
			if(map.containsKey(num)) 
				map.put(num,map.get(num)+1);
			else 
				map.put(num, 1);
		}
		
		st= new StringTokenizer(br.readLine());
		int M = Integer.parseInt(st.nextToken());
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		st= new StringTokenizer(br.readLine());
		for (int i = 0; i < M; i++) {
			int chk = Integer.parseInt(st.nextToken());
			
			if(map.containsKey(chk)) {
//				System.out.print(map.get(chk)+" ");
				bw.write(map.get(chk)+" ");
			} else {
//				System.out.print(0+" ");
				bw.write(0+" ");
			}
		}
		bw.write("\n");
		bw.flush();
//		System.out.println();
	}

}
728x90

+ Recent posts