https://www.acmicpc.net/problem/10815
import sys
read = sys.stdin.readline
n = int(input())
cards = list(map(int, read().split()))
m = int(input())
nums = list(map(int, read().split()))
result = [0] * len(nums)
for i in range(m):
if nums[i] in cards:
result[i] = 1
print(result)
result 리스트를 0으로 초기화 한 후 카드가 존재하는 경우에만 값을 1로 변경해주었다. 간단하게 생각하면 시간초과가 난다.
import sys
read = sys.stdin.readline
n = int(input())
cards = list(map(int, read().split()))
m = int(input())
nums = list(map(int, read().split()))
cards.sort()
# binary_search
for num in nums:
start = 0
end = n-1
exist = False
while start <= end:
mid = (start + end) // 2
if num > cards[mid]:
start = mid+1
elif cards[mid] > num:
end = mid-1
else:
exist = True
break
print(1 if exist else 0, end=' ')
이진탐색을 진행하면서 exist 변수를 이용해 True 일 때 (정수 카드가 존재할 때) 1을 출력 그렇지 않은 경우에는 0을 출력하도록 했다. 리스트를 이용해 for문 안에서 append를 사용하면 효율성이 떨어지는 것 같다....😥
'Algorithm > Problems' 카테고리의 다른 글
[백준/파이썬] 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2022.11.18 |
---|---|
[백준/파이썬] 14425번 문자열 집합 (0) | 2022.11.18 |
[백준/파이썬] 1436번 영화감독 숌 (0) | 2022.11.17 |
[백준/파이썬] 1018번 체스판 다시 칠하기 (0) | 2022.11.14 |
[백준/파이썬] 7568번 덩치 (2) | 2022.11.14 |