본문 바로가기

백준 문제풀이

7795번: 먹을 것인가 먹힐 것인가 / silver 3 / 이분탐색

https://www.acmicpc.net/problem/7795

 

7795번: 먹을 것인가 먹힐 것인가

심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을

www.acmicpc.net

'''
7795번: 먹을 것인가 먹힐 것인가 / silver 3 / 이분탐색
'''
import sys

input = sys.stdin.readline

t = int(input())
for _ in range(t):
    n, m = map(int, input().split())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    a.sort()
    b.sort()
    all_cnt = 0
    for i in range(len(a)):
        point = -1
        start = 0
        end = len(b) - 1
        while start <= end:
            mid = (start + end) // 2
            if b[mid] < a[i]:
                point = mid
                start = mid + 1
            else:
                end = mid - 1
        all_cnt += point + 1
    print(all_cnt)

 

이분탐색 활용 문제

1. a,b 리스트를 오름차순으로 정렬하기

2. 이분탐색 알고리즘

- a[i] 보다 큰 수이면서, 가장 작은 값을 가지는 b 리스트의 인덱스를 구하기