import sys
from bisect import bisect_left,bisect_right
input=sys.stdin.readline
n,q=map(int,input().split())
cars=list(map(int,input().split()))
cars.sort()
carSet=set(cars)
for _ in range(q):
m=int(input())
if m not in carSet:
print(0)
elif m<=cars[0]:
print(0)
elif m>=cars[-1]:
print(0)
else:
index=bisect_left(cars,m)
# print(index)
print(index*((n-1)-index))
자동차를 테스트하기 위해 각 수가 중간 지점이 될 수 있는 경우가 몇개 있는지를 고르는 문제이다. 즉 수가 양끝에 있거나 존재하지 않은 수가 아닌 이상 가운데 있는 경우, 즉 현재의 수보다 큰 수들의 갯수와 작은 수들의 갯수의 곱을 찾은 문제이다. 나같은 경우는 정렬 후 조건문으로 조건들을 걸러내고 bisect를 통해 위치를 빠르게 찾아냈다.
이렇게 Python으로 Softeer의 "자동차 테스트" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊