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
<코드>
from sys import stdin
N = int(stdin.readline())
alist = list(map(int, stdin.readline().split()))
M = int(stdin.readline())
blist = list(map(int, stdin.readline().split()))
cnt = 0
alist.sort()
def binarySearch(s, e, target):
mid = (s+e)//2
if s > e:
print(0)
return
if alist[mid] == target:
print(1)
return
elif alist[mid] > target:
e = mid-1
binarySearch(s, e, target)
elif alist[mid] < target:
s = mid+1
binarySearch(s, e, target)
for i in blist:
binarySearch(0, N-1, i)
<풀이방법>
1. 이진탐색으로 찾으면 1 못 찾으면 0을 출력하였다.
<리뷰>
처음에 for문 돌려서 in 으로 했는데 시간초과 되는 문제였다... 그래서 정답률이 29%인 듯?
그래서 이진탐색으로 풀었다.
'파이썬' 카테고리의 다른 글
[프로그래머스] 배달 (0) | 2022.06.09 |
---|---|
[프로그래머스] 소수 만들기 (0) | 2022.06.09 |
[백준] 1182번 부분수열의 합 (파이썬) (0) | 2022.06.07 |
[백준] 1181번 단어정렬 (파이썬) (0) | 2022.06.07 |
[백준] 1018번 체스판 다시 칠하기 (0) | 2022.06.07 |