지원서 작성
지원자가 지원서에 입력한 4가지의 정보와 획득한 코딩테스트 점수를 하나의 문자열로 구성한 값의 배열 info, 개발팀이 궁금해하는 문의조건이 문자열 형태로 담긴 배열 query가 매개변수로 주어질 때, 각 문의조건에 해당하는 사람들의 숫자를 순서대로 배열에 담아 return 하도록 solution 함수를 완성해 주세요.
from itertools import combinations
def solution(info, query):
dic = {'cpp':1<<8,'java':1<<7,'python':1<<6,
'backend':1<<5,'frontend':1<<4,
'junior':1<<3,'senior':1<<2,
'chicken':1<<1,'pizza':1}
maps = {}
for inf in [x.split() for x in info]:
for i in range(5):
for comb in combinations(inf[:-1], i):
tmp = 0
for c in comb:
tmp += dic[c]
if tmp in maps:
maps[tmp].append(int(inf[4]))
else:
maps[tmp] = [int(inf[4])]
# 각 점수 오름차순
for item in maps.values():
item.sort()
answer = []
for q in [(x.replace('and ', '').split()) for x in query]:
search = 0
for s in q[:-1]:
if s != '-': search += dic[s]
answer.append(cal(maps[search] if search in maps else [0], int(q[4])))
return answer
def cal(scores, target): # 점수들, 기준점
left, right = 0, len(scores)
while left < right:
mid = (left + right) // 2
if scores[mid] >= target:
right = mid
else:
left = mid+1
return len(scores) - left