
import sys
n = int(input())
a = set(map(int, sys.stdin.readline().split())) # 리스트를 집합 set으로 변환
m = int(input())
m_num = list(map(int, sys.stdin.readline().split()))
# 각 숫자에 대해 집합에서 검색
for num in m_num:
if num in a:
print(1)
else:
print(0)
# 오답 (시간 초과)
import sys
n = int(input())
a = list(map(int, sys.stdin.readline().split()))
m = int(input())
m_num = list(map(int, sys.stdin.readline().split()))
for num in m_num:
if num in a:
print(1)
else:
print(0)
* 시간 초과 이유 : list(a)에 in 연산자를 사용해서 > 최악의 경우 O(n*m)의 시간 복잡도 발생
n, m이 커질수록 시간 초과되기 때문에 list(a)를 set(a)로 변환
>> in 연산자를 사용할 때는 집합(set)을 사용하기
(해시 테이블 기반이라 평균 O(1)의 시간 복잡도, list는 O(n)의 시간 복잡도 )
- 집합 (set): in 연산자는 평균적으로 O(1)의 시간 복잡도를 가집니다. 이는 해시 테이블을 사용하여 요소를 빠르게 찾을 수 있기 때문입니다.
- 리스트 (list): in 연산자는 O(n)의 시간 복잡도를 가집니다. 리스트의 요소를 처음부터 끝까지 순차적으로 검색하기 때문에 요소의 수가 많을수록 시간이 많이 걸립니다.
'HELLO WORLD > BAEKJOON' 카테고리의 다른 글
| 백준 | 2523 별 찍기 - 13 (0) | 2025.01.21 |
|---|---|
| 백준 | 20053 최소, 최대 2 (0) | 2025.01.18 |
| 백준 | 2566 최댓값 (0) | 2025.01.18 |
| 백준 | 20124 모르고리즘 회장님 추천 받습니다 (0) | 2025.01.18 |
| 백준 | 9012 괄호 (0) | 2025.01.18 |