백준|19637번|IF문 좀 대신 써줘

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
46/136

문제설명
각 구간들과 구간에 따른 칭호를 입력받고 캐릭터의 전투력에 따라서 칭호를 출력하는 문제입니다.

작동 순서
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에 비해서 다소 어려운것 같았지만 재미있는 문제였던것 같습니다.

profile
INTP 개발자 지망생

0개의 댓글