문제
N개의 정수 A [1], A [2], …, A [N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A [1], A [2], …, A [N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.
출력
M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.
풀이
def binary_search(alist,target,start,end): #이진탐색 구현
while start <= end:
mid = (start+end)//2
if alist[mid] == target :
return mid
elif alist[mid] > target:
end = mid - 1
else:
start = mid + 1
return None
n = int(input())
alist = list(map(int,input().split()))
m = int(input())
blist = list(map(int,input().split()))
alist.sort()#이진탐색을 위한 정렬
for i in blist:
result = binary_search(alist,i,0,n-1)
if result != None:
print('1')
else:
print('0')
느낀 점
이진 탐색을 공부하고 나서 제일 쉬운 난이도의 문제를 풀어 보았다 . 실버 4 티어 정도의 문제이다 보니 쉽게 풀 수 있었는데 좀 더 활용적인 문제를 풀어보고 실력을 더욱 기르도록 해야겠다. 일단 이번 주 목표는 실버 상위 티어 문제들을 풀어보는 것인데 쉽게 되려나 모르겠다.. 이번 달 안에 골드 티어 문제들을 풀어서 취업대비 실력을 길러야지 ㅠㅠ
'Algorithm' 카테고리의 다른 글
[BOJ/백준] 1654번 랜선자르기 (0) | 2020.11.20 |
---|---|
[BOJ/백준] 10816 숫자 카드 2 (0) | 2020.11.19 |
[이코테]순차탐색과 이진탐색 (0) | 2020.11.17 |
[백준/BOJ] 2108번 통계학 (0) | 2020.11.16 |
[이코테]계수정렬 (0) | 2020.11.16 |