본문 바로가기
Algorithm/Baekjoon

Baekjoon 10815 숫자 카드 JAVA

by Hunveloper 2022. 4. 25.
728x90
 

10815번: 숫자 카드

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

www.acmicpc.net

문제

숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.

입력

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

셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다

출력

첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1을, 아니면 0을 공백으로 구분해 출력한다.

풀이

문제이 있는 알고리즘의 분류로는 상근이가 들고있는 카드를 입력받아 정렬후 이분탐색을 해서 찾는 의도지만,

HashSet을 이용해서 해결하였다.

상근이가 들고 있는 카드를 Set에 넣어서 중복없이 관리하며, M개의 숫자카드를 hashset에 있는지 없는지 비교하며 카드 존재 유뮤를 판단한다.

코드
import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int n=Integer.parseInt(br.readLine());
		HashSet<String> hs = new HashSet<String>();
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i=0;i<n;i++)
			hs.add(st.nextToken());
		int m= Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine());
		for(int i=0;i<m;i++)
			bw.write(hs.contains(st.nextToken())?"1 ":"0 ");
		bw.close();
	}
}
728x90
728x90

'Algorithm > Baekjoon' 카테고리의 다른 글

Baekjoon 10971 외판원 순회 2 JAVA  (0) 2022.04.25
Baekjoon 1946 신입 사원 JAVA  (0) 2022.04.25
Baekjoon 1520 내리막 길 JAVA  (0) 2022.04.25
Baekjoon 10836 여왕벌 JAVA  (0) 2022.04.25
Baekjoon 10826 피보나치 수 4 JAVA  (0) 2022.04.25

댓글