🐸 문제 정보
🤖 알고리즘
이진탐색
⏱️ 풀이 시간
16.22m
📝 풀이
이진탐색 문제였다.
칭호의 이름과 상한점을 리스트에 넣은 후,
start는 0부터, end는 n - 1부터 시작해서 이진탐색을 진행하면 된다.
문제에 이미 비내림차순(==오름차순)으로 정렬되어 입력된다고 적혀있기 때문에, 칭호에 대해서 정렬을 하지 않아도 된다. 마찬가지로 end 역시 입력으로 주어지기에 len으로 길이를 구할 필요 없다.
다른 사람들의 풀이를 보면서 왜 전부 정렬을 한 번 더 하는지 모르겠다 느꼈ㄷㅏ...
🧑💻 나의 답
# pypy3
import sys
input = sys.stdin.readline
n, m = list(map(int, input().rstrip().split()))
emblem = [list(input().rstrip().split()) for _ in range(n)]
def binary(score):
start = 0
end = n - 1
while start <= end:
mid = (start + end) // 2
if int(emblem[mid][1]) < score:
start = mid + 1
else:
end = mid - 1
return emblem[start][0]
for _ in range(m):
print(binary(int(input().rstrip())))
'PS > 문제풀이' 카테고리의 다른 글
백준 12919 A와 B 2 Python (0) | 2024.01.20 |
---|---|
백준 1927 최소 힙 Python (0) | 2024.01.20 |
백준 1205 등수 구하기 Python (0) | 2024.01.20 |
백준 13549 숨바꼭질 3 (0) | 2024.01.17 |
백준 1446 지름길 Python (0) | 2024.01.17 |