문제
https://www.acmicpc.net/problem/19637
Algorithm
처음엔 딕셔너리로 정의했는데 key, value로 변환하기 까다로웠다.
이러한 케이스는 다음과 같이 각각의 두 개의 리스트를 정의 → 인덱스 쌍으로 찾을 수 있다는 점을 알게되었다.
# 칭호 정보 저장 | name_arr, val_arr은 같은 인덱스로 값을 찾을 수 있다.
for _ in range(n):
name,value=input().split()
name_arr.append(name)
val_arr.append(int(value))
# ... 생략
# val_arr로부터 원하는 값을 찾는다.
if target <= val_arr[mid]:
ans=mid
right=mid-1
else:
left=mid+1
# 해당 인덱스의 name_arr을 찾는다.
print(name_arr[ans])
Code
import sys; input=sys.stdin.readline
n,m=map(int,input().split())
name_arr=[]
val_arr=[]
# 칭호 정보 저장 | name_arr, val_arr은 같은 인덱스로 값을 찾을 수 있다.
for _ in range(n):
name,value=input().split()
name_arr.append(name)
val_arr.append(int(value))
for _ in range(m):
target=int(input())
ans=0
left, right = 0, len(name_arr)-1
while left <= right:
mid = (left+right)//2
if target <= val_arr[mid]:
ans=mid
right=mid-1
else:
left=mid+1
print(name_arr[ans])
'Koala - 14기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Java] 17179 케이크 자르기 (0) | 2024.04.07 |
---|---|
[백준 / c++] 15685 드래곤커브 (0) | 2024.04.07 |
[백준/python3] 2243번 : 사탕상자 (0) | 2024.04.07 |
[백준/C++] 11576번 Base Conversion (0) | 2024.04.06 |
[백준/Python3] 11659번 : 구간 합 구하기4 (0) | 2024.04.06 |