코딩테스트/BOJ

테케는 맞는데 오답- 왜안되는지 모르겠음

박소민 2023. 3. 4. 13:57
import sys
input=sys.stdin.readline

#점 개수 n, 선분 개수 m
n,m=map(int, input().split())
lst=list(map(int,input().split()))
mid=0
s,e=0,0
result=[]

lst.sort()
def binary(start, end, key):
    global mid
    mid=(start+end)//2
    if start>end: 
        return mid
  
    if lst[mid]<=key:
        return binary(mid+1, end,key)
    else:
        return binary(start,mid-1, key)
    

for _ in range(m):
    start, end= map(int,input().split())
    s=binary(0,n-1,start)
    e=binary(0,n-1,end)

    #s,e는 자기보다 작거나 같은값의 인덱스가 나옴
    #시작점이 작으면 미포함하기 때문에 하나더 빼야함
    #끝점은 작거나 같으면 무조건 포함
    if lst[s]<start:
        s+=1
    result.append(e-s+1)
    
for r in result:
    print(r)

 

 

https://hyunee-egeojeogeo.tistory.com/87