이진 탐색을 위한 (레벨, 능력치) 정보를 담을 배열 선언
m개의 for문을 돌면서 입력으로 받은 능력치에 대한 level을 이진탐색
이때, left가 해당 조건을 만족하는 첫 인덱스이기 때문에 left로 출력
n, m = map(int, input().split())
data = []
for _ in range(n):
level, value = input().split()
value = int(value)
if data and data[-1][1] == value:
continue
data.append(((level,value)))
for _ in range(m):
power = int(input())
left = 0
right = len(data) - 1
while left<=right:
mid = (left+right) // 2
if data[mid][1] >= power:
right = mid - 1
else:
left = mid +1
print(data[left][0])
입력의 시간 단축을 위해 sys 임포트
import sys
n, m = map(int, sys.stdin.readline().split())
data = []
for _ in range(n):
level, value = sys.stdin.readline().split()
value = int(value)
if data and data[-1][1] == value:
continue
data.append(((level,value)))
for _ in range(m):
power = int(sys.stdin.readline())
left = 0
right = len(data) - 1
while left<=right:
mid = (left+right) // 2
if data[mid][1] >= power:
right = mid - 1
else:
left = mid +1
print(data[left][0])