리주의 프로그래밍 공부

[10816] 숫자 카드 2 본문

알고리즘 공부(백준)

[10816] 숫자 카드 2

Leezu_ 2020. 12. 22. 15:39

이분 탐색 문제

숫자 카드에 적힐 수 있는 수의 범위는 -10000000 ~ 10000000 이므로

20000001의 크기를 가진 배열이 필요.

다만 마이너스는 배열의 인덱스로 사용하지못함으로, +10000000을 해줘서 배열 카운팅

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	//숫자 카드에 적힌 수의 범위만큼 배열 초기화
	static int[] line = new int[20000001];

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int[] result;
		
		int n = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i=0; i<n; i++) {
			int temp = Integer.parseInt(st.nextToken());
            //배열에는 마이너스가 없으므로 +10000000
			line[temp + 10000000]++;
		}
		int m = Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<m; i++) {
			int temp = Integer.parseInt(st.nextToken());
			bw.write(Integer.toString(line[temp + 10000000])+" ");
		}
		bw.flush();
		bw.close();
	}
}

'알고리즘 공부(백준)' 카테고리의 다른 글

[2293] 동전 1  (0) 2021.01.04
[11286] 절댓값 힙  (0) 2021.01.02
[11279] 최대 힙  (0) 2021.01.02
[1920] 수 찾기  (0) 2020.12.28
[2630] 색종이 만들기_java  (0) 2020.12.22