JAVA/백준
백준 1920번: 수 찾기
부리와 깃털
2024. 4. 6. 22:07
728x90
반응형
https://www.acmicpc.net/problem/1920
일단 N을 입력받고 N개의 정수를 입력받는다.
그 다음에 새로 M을 입력받고 M개의 정수를 입력받는다.
새로 받은 정수들 하나하나가 기존의 N개의 정수들에 포함됬는지를 확인하고,
포함되어있다면 1을 아니라면 0을 출력하는 문제이다.
우선, N개의 정수를 HashSet에 받아주기로 했다.
HashSet은 중복을 허용하지 않고, 순서를 저장하지 않는 대신에 속도가 빠르다는 특징이 있다.
HashSet에 정수를 저장하고 M과 M개의 정수를 받아서 비교한다.
이때, HashSet의 contains()메소드를 사용했다.
contains()메소드는 HashSet에 해당 요소가 포함되어 있는지 확인하고 boolean값을 리턴해준다.
아래는 해당 문제를 푼 코드이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
HashSet<Integer> arr = new HashSet<>();
for (int i = 0; i < N; i++) arr.add(Integer.parseInt(st.nextToken()));
N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] contain = new int[N];
for (int i = 0; i < N; i++) contain[i] = Integer.parseInt(st.nextToken());
br.close();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for (int i = 0; i < N; i++) {
if (arr.contains(contain[i])) bw.write("1\n");
else bw.write("0\n");
}
bw.flush();
bw.close();
}
}
반응형