프로그래밍 언어/파이썬

백준 > 7795 먹을 것인가 먹힐 것인가

B612 2024. 4. 4. 03:09

 

어이없는 이유로 하루 동안 삽질했다...

start + end에 괄호를 사용하지 않았으며,, bin 함수의 인자로 brr을 주고서 arr로 작성했다...

 

그래도 lower bound 알고리즘에 대해 알게 되었다.

그리고 파이썬 라이브러리로 이미 제공한다는 사실도..!

from sys import stdin

q = int(stdin.readline())

def bin(brr, k): #이진 탐색
    start = 0
    end = len(brr)

    while start < end:
        mid = (start + end) // 2 #mid = 2 arr[mid] = 3
        if k <= brr[mid]: #범위를 줄여서 검사해야됨
            end = mid
        else:
            start = mid + 1
    return end

for i in range(q):
    cnt = 0
    a, b = map(int, (input().split()))
    arr = list(map(int, stdin.readline().split()))
    brr = list(map(int, stdin.readline().split()))
    arr.sort()
    brr.sort()
    for j in range(a):
        if arr[j] <= brr[0]: #검사할 필요 x
            pass
        elif arr[j] > brr[-1]:
            cnt += b    
        else:
            cnt += bin(brr, arr[j])
    print(cnt)

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

백준 > 2309 일곱 난쟁이  (0) 2024.04.04
백준 > 2805 나무 자르기  (0) 2024.04.02
백준 > 2869 달팽이는 올라가고 싶다  (0) 2024.03.30
백준 > 9012 괄호  (0) 2024.03.28
백준 > 1920 수 찾기  (0) 2024.03.10