이번 문제는 입력받은 숫자가 내가 가지고 있는 숫자중에 있는지 없는지 판별하는 문제다.
그래서 배열 두개에 숫자를 입력받고 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 = ' ')
그래서 이분탐색 알고리즘을 보고 다시 구현해보았다.
'백준 문제풀이' 카테고리의 다른 글
[백준 1978번 문제] 소수 찾기 (0) | 2022.07.29 |
---|---|
[백준 10989번 문제] 수 정렬하기 3 (0) | 2022.07.29 |
[백준 11650번 문제] 좌표 정렬하기 (0) | 2022.05.19 |
[백준 2751번 문제] 수 정렬하기2 (0) | 2022.05.12 |
[백준 1181번 문제] 단어 정렬 (0) | 2022.05.10 |