차곡차곡

[BOJ/Python] 백준 19637번 - IF문 좀 대신 써줘 본문

CS/Algorithm

[BOJ/Python] 백준 19637번 - IF문 좀 대신 써줘

sohy 2024. 8. 8. 18:53

백준 #19637 IF문 좀 대신 써줘

https://www.acmicpc.net/problem/19637

 

import sys

input = sys.stdin.readline

n, m = map(int, input().split())    # n: 칭호 개수, m: 캐릭터 개수
nickname = {}
level = []

def findNickname(power):
  start = 0
  end = len(level) - 1

  while start <= end:
    mid = (start + end) // 2
    if power <= int(level[mid]):
      end = mid - 1
    else:
      start = mid + 1
  
  return nickname[level[start]]

for _ in range(n):
  val = tuple(input().split())
  if not val[1] in nickname:
    nickname[val[1]] = val[0]
    level.append(val[1])

for _ in range(m):
  print(findNickname(int(input())))

비내림차순으로 기준 전투력이 같은 것이 입력으로 들어올 수 있다. 이를 처리하기 위해 딕셔너리를 활용하여, 기준 전투력에 해당하는 칭호가 이미 저장되어 있는 경우 그냥 넘어가도록 했다. 또한, 기준 전투력만 따로 리스트에 저장하여 이분 탐색을 통해 전투력이 속하는 구간을 찾도록 했다.

 


 

  • 비내림차순는 각 항목이 그 앞의 항목보다 크거나 같은 경우를 의미한다. (비내림차순 오름차순)
  • 파이썬은 전역변수에 접근 시 지역변수보다 느리다.
Comments