티스토리 뷰
728x90
반응형
문제
https://www.acmicpc.net/problem/10815
10815번: 숫자 카드
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
코드
n = int(input())
answer = list(map(int, input().split()))
m = int(input())
check = list(map(int, input().split()))
answer.sort()
result = []
for target in check:
l = 0
r = len(answer)-1
while l <= r:
mid = (l + r) // 2
if target == answer[mid]:
result.append(1)
break
if answer[mid] < target:
l = mid + 1
elif answer[mid] > target:
r = mid - 1
else:
result.append(0)
for i in result:
print(i, end=' ')
범위가 크므로 이분탐색으로 풀어야하는 문제이다.
이분탐색은 정렬되어 있어야 사용할 수 있으므로 answer로 받은 리스트를 정렬시켜준다.
target을 찾을경우 result에 1을 추가하고 만약 while문에서 break문으로 동작이 멈추지 않았다면 (result에 1을 추가하지 않은 경우) target을 못찾았다는 뜻이니까 result에 0을 추가하면 된다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2193번, 이친수 (Python) (0) | 2021.08.03 |
---|---|
[백준] 1912번, 연속합 (Python) (0) | 2021.07.30 |
[백준] 1162번, 도로포장 (Python) (0) | 2021.07.22 |
[백준] 2573번, 빙산 (Python) (0) | 2021.07.21 |
[백준] 11725번, 트리의 부모 찾기 (Python) (0) | 2021.07.21 |
댓글