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

JSK·2022년 7월 31일

파이썬 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
느리지만 꾸준한 개발자🐢

0개의 댓글