문제
https://www.acmicpc.net/problem/1920
걸린 시간
01 : 27 : 31
풀이
Python3
import sys
input = sys.stdin.readline
if __name__ == "__main__":
N = int(input())
A = [int(i) for i in input().split()]
M = int(input())
X = [int(i) for i in input().split()]
A.sort()
for i in X:
left = 0
right = len(A)-1
while left <= right:
mid = (right + left) // 2
# 찾으려고 하는 값이 mid 보다 큰가?
if i == A[mid]:
result = A[mid]
break
elif i > A[mid]:
result = A[mid]
left = mid + 1
else:
result = A[mid]
right = mid - 1
if result == i:
print('1')
else:
print('0')
이분탐색을 이용한 문제인 줄 알고 있었지만 구현이 미흡해 시간이 오래 걸렸다. 구현이 익숙치 않으면 작은 예제로 직접 풀이과정을 그려보는것이 좋을 것 같다.
문제유형 분석과 풀이를 보지않고 해결했음에 의미를 두는 문제.
'Baekjoon' 카테고리의 다른 글
Baekjoon 2609번 최대공약수와 최소공배수 (0) | 2020.07.25 |
---|---|
Baekjoon 11650번 좌표 정렬하기 (0) | 2020.07.24 |
Baekjoon 1018번 체스판 다시 칠하기 (0) | 2020.07.23 |
Baekjoon 1929번 소수 구하기 (0) | 2020.07.23 |
Baekjoon 2108번 통계학 (0) | 2020.07.22 |
댓글