취준생의 코딩테스트 연습기

[백준] 1920번 수 찾기 / 파이썬(python) 본문

코딩테스트/백준

[백준] 1920번 수 찾기 / 파이썬(python)

Jiwon_C 2021. 5. 21. 22:30

# 문제 링크

https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

# Soultion

처음에 단순하게 in을 사용하여 문제를 풀었더니 시간초과가 발생했다.

따라서 이진탐색을 이용하여 문제 해결.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 시간초과 -> 이진탐색
= int(input())
li_n = sorted(list(map(int,input().split())))
= int(input())
li_m = list(map(int,input().split()))
def binary_search(a,x):
    start = 0
    end = len(a)-1
    
    while(start<=end):
        mid = (end+start)//2
        
        if a[mid]==x:
            return 1
        elif x>a[mid]:
            start =mid+1
        else:
            end = mid-1
    return 0
for i in li_m:
    print(binary_search(li_n,i))
cs
 

 

 

Comments