Koala - 14기/코딩테스트 준비 스터디
[백준/python] IF문 좀 대신 써줘
sebinChu
2024. 4. 7. 20:03
문제
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])