백준 문제 풀이 - 이진탐색
문제 확인 🏃
3 8
WEAK 10000
NORMAL 100000
STRONG 1000000
0
9999
10000
10001
50000
100000
500000
1000000
>> WEAK
WEAK
WEAK
NORMAL
NORMAL
NORMAL
STRONG
STRONG
3 5
B 100
A 100
C 1000
99
100
101
500
1000
>> B
B
C
C
C
import sys
input = sys.stdin.readline
N, M = map(int, input().split()) # 칭호의 개수 N, 칭호를 출력해야 하는 캐릭터들의 개수 M
awards = []
for _ in range(N):
name, grade = input().split()
awards.append((name, int(grade)))
def solution(target):
if target <= awards[0][1]:
return awards[0][0]
else:
for idx in range(1, N):
if awards[idx-1][1] < target <= awards[idx][1]:
return awards[idx][0]
for _ in range(M):
grade = int(input())
print(solution(grade))

import sys
input = sys.stdin.readline
N, M = map(int, input().split()) # 칭호의 개수 N, 칭호를 출력해야 하는 캐릭터들의 개수 M
awards = []
for _ in range(N):
name, grade = input().split()
awards.append((name, int(grade)))
def solution(start, end, target):
answer = 0
while start <= end:
mid = (start + end) // 2
if awards[mid][1] >= target:
answer = mid
end = mid - 1
else:
start = mid + 1
return awards[answer][0]
for _ in range(M):
grade = int(input())
print(solution(0, N-1, grade))
