https://www.acmicpc.net/problem/10815
풀어봐놓고 틀려서 너무 멘탈 흔들렸다
import sys
# 상근의 카드가 찾을 targetList
def binarySearch(left, right, target):
while left <= right:
mid = (left + right) // 2
testTarget = targetPool[mid]
if testTarget == target:
return mid
elif(testTarget > target):
right = mid - 1
elif(testTarget < target):
left = mid + 1
return -1
# -1만 아니면 값을 찾았다고 할 수 있다.
# 실제 입력이 -1이 들어올 수도 있는걸 생각하지를 못했다. 반면에 idx를 반환하면 반드시 값은 존재하는 것이니까..
targetCnt = int(sys.stdin.readline())
targetPool = list(map(int, sys.stdin.readline().strip().split()))[:targetCnt]
searchCnt = int(sys.stdin.readline())
searchPool = list(map(int, sys.stdin.readline().strip().split()))[:searchCnt]
targetPool.sort()
for i in range(searchCnt):
result = binarySearch(0, len(targetPool) - 1, searchPool[i])
if(result == -1):
searchPool[i] = 0
else:
searchPool[i] = 1
for i in range(len(searchPool)):
print(str(searchPool[i]) + " " , end="")
이분 탐색 코드 안에 있는 testTarget이 이전에는 return mid가 아닌 testTarget을 반환하게 했는데 이게 문제였다.
-1이 실제 값으로 사용 될 여지가 있었고 그래서 부적절한 return을 사용 한 상태였다.
'문제풀이' 카테고리의 다른 글
[PY] <!> 하자있는 채로 풀었던 내용들 (0) | 2025.03.28 |
---|---|
[PY]<!> 9935 : 문자열 폭발 (0) | 2025.03.27 |
[PY] 1966 : 프린터 큐 (0) | 2025.03.27 |
[PY] 10830 : 행렬 제곱 (0) | 2025.03.26 |
[PY] 6549 : 히스토그램에서 가장 큰 직사각형 (0) | 2025.03.26 |