https://www.acmicpc.net/problem/7795
풀이 과정
- 문제를 간단하게 생각하면 이진 탐색으로 위치를 찾으면 왼쪽 구간의 요소의 개수가 바로 먹을수 있는 수이다.
- 즉, 이진 탐색 결과가 곧 개수이다.
- 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 |