Programming/JAVA
[백준] 1920: 수 찾기
gayeon_
2024. 5. 27. 22:38
N개의 정수를 입력받아 집합을 만들고
M개를 입력받아 집합에 입력한 숫자가 있는지 입력한 순서대로 1(집합에 있는 경우) 또는 0(집합에 없는 경우)을 출력하는 문제이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
// 첫째 줄에 주어지는 N
int N = scanner.nextInt();
// N개의 정수 배열 A 입력
HashSet<Integer> set = new HashSet<>();
for(int i = 0; i < N; i++) {
set.add(scanner.nextInt());
}
// 셋째 줄에 주어지는 M
int M = scanner.nextInt();
// M개의 정수 입력과 존재 여부 확인(1 또는 0)
StringBuilder result = new StringBuilder();
for(int i = 0; i < M; i++) {
int number = scanner.nextInt();
if(set.contains(number)) {
result.append("1\n");
} else {
result.append("0\n");
}
}
System.out.println(result.toString());
scanner.close();
}
}
Scanner로 N을 입력받았다.
다음 줄에서 N개의 정수를 입력받을 때 HashSet에 저장하도록 코드를 작성했다.
HashSet은 중복을 허용하지 않고 요소의 존재 여부를 확인할 수 있기 때문에 이 문제에서 사용했다.
검사할 수인 M과 M개의 정수를 scanner로 입력받았다.
contains 메서드로 HashSet에 정수가 있는지 확인하고 존재하면 1, 아니면 0을 StringBuilder에 저장했다.
HashSet을 사용했기 때문에 요소의 존재 여부를 확인할 때의 평균 시간 복잡도는 O(1)이다.