[백준] 1920 수 찾기 Python

BellBoy·2023년 5월 7일
0

https://www.acmicpc.net/status?user_id=bellboy78&problem_id=1920&from_mine=1

import sys
input = sys.stdin.readline

N = int(input())

N_array = list(map(int,input().split()))

M = int(input())

M_array = list(map(int,input().split()))

N_array.sort()

my_array = [ 0 for i in range(M)]

for i in range(M):
    left = 0
    right = len(N_array) -1
    while left <= right:
        middle = (left+right)//2

        if M_array[i] < N_array[middle]:
            right = middle - 1

        elif N_array[middle] < M_array[i]:
            left = middle + 1

        else:
            my_array[i] = 1
            break

for i in my_array:
    print(i)

위 문제에서 어려웠던점

시간 초과

처음엔 sys.stdin.readline으로 시간을 줄이고
for문 반복인 시간 복잡도 NM 이 아닌 MlogN으로 이진 탐색을 이용해서 문제를 해결

profile
리액트러버

0개의 댓글