백준 문제풀이
[백준 10815번 문제] 숫자카드
eunda_coding
2022. 5. 20. 15:41
이번 문제는 입력받은 숫자가 내가 가지고 있는 숫자중에 있는지 없는지 판별하는 문제다.
그래서 배열 두개에 숫자를 입력받고 for문으로 돌려서 조건문으로 판별하려고 했었는데 시간초과가 떴다ㅜ
요즘엔 문제는 풀리는데 시간초과가 많이 뜨는거같다ㅜ
num = int(input())
sanggeun = list(map(int,input().split()))
m = int(input())
nums = list(map(int,input().split()))
for i in range(len(nums)):
if nums[i] in sanggeun:
nums[i] = 1
else:
nums[i] = 0
for i in nums:
print(i, end=' ')
처음 방식으로 푼 코드인데 시간초과가 떠서 다른 사람들은 어떻게 풀었나 보니깐 이분 탐색법으로 풀어야 하는 문제였다.
def binary_search(num):
l = 0
r = n -1
while l <= r:
mid = (l + r)//2
if sanggeun[mid] == num:
return 1
elif sanggeun[mid] > num:
r = mid -1
else:
l = mid + 1
return 0
n = int(input())
sanggeun = list(map(int,input().split()))
m = int(input())
nums = list(map(int,input().split()))
sanggeun.sort()
for i in nums:
print(binary_search(i), end = ' ')
그래서 이분탐색 알고리즘을 보고 다시 구현해보았다.