새발블로그
[백준/Java] 1920 수 찾기 본문
문제
https://www.acmicpc.net/problem/1920
풀이방법
처음에 arrayList.contains로 했다가 시간 초과 남
ArrayList의 contains는 리스트의 처음부터 끝까지 순회하며 O(N)을 가짐
따라서 M 개의 수만큼 반복 * 내부 반복해서 O(N*M)
HashSet의 contains는 평균적으로 O(1)
따라서 M개의 수만큼 반복 * 내부 반복 O(N)
풀이
import java.io.*;
import java.util.*;
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 aStr = new StringTokenizer(br.readLine());
Set<Integer> set = new HashSet<>();
// A 배열
for (int i = 0 ; i<N; i++) {
set.add(Integer.parseInt(aStr.nextToken()));
}
int M = Integer.parseInt(br.readLine());
StringTokenizer bStr = new StringTokenizer(br.readLine());
for (int i = 0; i<M; i++) {
if (set.contains(Integer.parseInt(bStr.nextToken()))){
System.out.println(1);
}
else {
System.out.println(0);
}
}
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준/Java] 1436 영화감독 숌 (0) | 2025.07.01 |
|---|---|
| [백준/Java] 11652 카드 (0) | 2025.07.01 |
| [백준/Java] 11279 최대 힙 (0) | 2025.07.01 |
| [백준/Java] 18258 큐 2 (0) | 2025.04.02 |
| [백준/Java] 14425 문자열 집합 (0) | 2025.03.30 |