오답 - 시간 초과
n = int(input())
card = list(map(int,input().split()))
m = int(input())
a = list(map(int,input().split()))
res = []
for i in a:
if i in card:
res.append(1)
else:
res.append(0)
for i in res:
print(i, end=" ")
문제 풀이 - 이분 탐색 X
n = int(input())
card = set(map(int,input().split()))
m = int(input())
a = list(map(int,input().split()))
for i in a:
if i in card:
print(1,end = " ")
else:
print(0, end = " ")
- set을 사용해서 다시 풀었더니 맞춘 문제이다.
- 혹시나 해서 다시 list를 append하지 않고 위와 같이 바로 출력해주는 방식으로 진행했으나 똑같이 시간초과가 나온다.
문제 풀이 - 이분 탐색 O
def binary_search(m):
start = 0
end = n-1
while start <= end:
mid = (start + end) // 2
if card[mid] == m:
return 1
elif card[mid] > m:
end = mid - 1
else:
start = mid + 1
return 0
n = int(input())
card = list(map(int,input().split()))
card.sort()
m = int(input())
a = list(map(int,input().split()))
for i in a:
print(binary_search(i), end=" ")
- 이 경우엔 해당 값이 무조건 맞아야 1로 나타날 수 있기 때문에 3가지 경우로 나누어 진행하였다.
- 다른 포스팅을 보면 알 수 있겠지만 다른 경우는 많더라도 포함하는 경우가 있어서 2가지 경우를 살펴보았다!
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][스택] - 10799. 쇠막대기(파이썬) (0) | 2022.07.17 |
---|---|
[백준][스택] - 2493. 탑 (0) | 2022.07.15 |
[백준][이분 탐색] - 1654. 랜선 자르기 (0) | 2022.07.08 |
[백준][이분 탐색] - 2805. 나무 자르기 (0) | 2022.07.08 |
[백준][수학] - 24480. 알고리즘 수업 - 깊이 우선 탐색 2 (0) | 2022.05.19 |