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
풀이 과정
- 문제를 간단하게 생각하면 이진 탐색으로 위치를 찾으면 왼쪽 구간의 요소의 개수가 바로 먹을수 있는 수이다.
- 즉, 이진 탐색 결과가 곧 개수이다.
- A의 각각의 요소들을 리스트 B에 대해서 이진탐색 진행
- 같은 경우 왼쪽 구간 진행(같아도 안되므로)
- 파이썬의 bisect_left 함수 사용
- 요소의 개수의 합을 출력해주면 된다.
소스 코드
import sys
from bisect import bisect_left
input = lambda : sys.stdin.readline().rstrip()
T = int(input())
for _ in range(T):
A, B = map(int, input().split())
T1 = sorted(map(int, input().split()))
T2 = sorted(map(int, input().split()))
count = 0
for e1 in T1:
pos = bisect_left(T2, e1)
count += pos
print(count)
'알고리즘[Python] > 백준 알고리즘' 카테고리의 다른 글
[ 17413 ] [ 스택 ] 단어 뒤집기 2 (0) | 2021.09.23 |
---|---|
[ 9093 ] [ 스택 ] 단어 뒤집기 (0) | 2021.09.23 |
[ 2615 ] [ Brute-Force ] 오목 (0) | 2021.09.21 |
[ 13144 ] [ Two-Pointer ] List of Unique Numbers (0) | 2021.09.20 |
[ 2461 ] [ Two-Pointer ] 대표 선수 (0) | 2021.09.20 |