-Code
from sys import stdin
def binary(l, arr, target):
start = 0
end = l - 1
while start < end:
mid = (start + end) // 2
if target < arr[mid]:
end = mid - 1
elif target > arr[mid]:
start = mid + 1
else:
return mid
return start
n, m = map(int, stdin.readline().split())
points = sorted(list(map(int, stdin.readline().split())))
for _ in range(m):
low, high = map(int, stdin.readline().split())
low_idx = binary(n, points, low)
S = low_idx if points[low_idx] >= low else low_idx + 1
high_idx = binary(n, points, high)
E = high_idx if points[high_idx] <= high else high_idx - 1
print(E - S + 1)
처음에 코드를 작성했으나 리스트에 존재하지 않는 값일 경우 문제가 생겨서 if문을 계속 바꿔주었으나 해결이 되지 않아 문제를 찾아보니 시작 지점과 끝나는 지점 각각 if문을 해주지 않아서 문제가 생긴 거였습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 10799번 쇠막대기 (0) | 2022.05.06 |
---|---|
[백준/파이썬] 7795번 먹을 것인가 먹힐 것인가 (0) | 2022.05.06 |
[백준/파이썬] 2512번 예산 (0) | 2022.05.06 |
[백준/파이썬] 2417번 정수 제곱근 (0) | 2022.05.06 |
[백준/파이썬] 1789번 수들의 합 (0) | 2022.05.05 |