문제설명
각 구간들과 구간에 따른 칭호를 입력받고 캐릭터의 전투력에 따라서 칭호를 출력하는 문제입니다.
작동 순서
1. 칭호의 이름과 구간을 입력받습니다.
2. 캐릭터들의 전투력을 입력받습니다.
3. 이진탐색을 통하여 캐릭터들의 전투력 구간을 찾습니다.
4. 그 구간의 칭호를 출력합니다.
소스코드
import sys
N, M = map(int, sys.stdin.readline().split())
title = []
for i in range(N):
title.append(sys.stdin.readline().split())
for i in range(M):
n = int(sys.stdin.readline())
first = 0
last = N-1
while True:
pivot = int((first+last)/2)
if first >= last:
print(title[pivot][0])
break
if n > int(title[pivot][1]):
first = pivot+1
else:
last = pivot
후기
시간제한이 굉장히 까다로운 문제였고 시간초과를 계속 겪고 식을 계속 수정해나가다가 pypy로 제출을 하여서 성공한 문제입니다. 실버3에 비해서 다소 어려운것 같았지만 재미있는 문제였던것 같습니다.