접근
https://www.acmicpc.net/problem/10815
그냥 파이썬의 in list 기능을 사용하면 될 것 같지만 이분탐색 알고리즘을 이용하여 문제를 해결하였다.
- 먼저 주어진 상근이의 숫자 카드들을 오름차순으로 정렬하였다.
- 간단하게 탐색의 시작 index와 끝 index를 두고, 중간 지점을 기준으로 찾고자 하는 카드가 더 큰지 작은지를 비교해서 이분탐색을 진행하였다.
코드
N = int(input())
sang = sorted(list(map(int, input().split())))
M = int(input())
check = list(map(int, input().split()))
res = [0] * M
def binarySearch(s, e, t):
if s == e:
return False
mid = (s + e) // 2
if sang[mid] == t:
return True
elif t < sang[mid]:
return binarySearch(s, mid, t)
else:
return binarySearch(mid + 1, e, t)
for i in range(M):
if binarySearch(0, N, check[i]):
res[i] = 1
else:
res[i] = 0
print(*res)
더 생각해 볼 것?
아니나 다를까 그냥 in 으로 탐색했더니 훨씬 빠른 속도로 결과를 얻을 수 있었다...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 1937: 욕심쟁이 판다 (Python) (0) | 2023.10.15 |
---|---|
백준 11048: 이동하기 (Python) (0) | 2023.10.09 |
백준 2193: 이친수 (Python) (0) | 2023.04.15 |
백준 2294: 동전2 (Python) (0) | 2023.04.14 |
백준 2458: 키 순서 (Python, PyPy) (1) | 2022.09.23 |
최근댓글