프로그래머스 - 순위검색
def get_index(L, X):
start = 0
end = len(L)
while start < end:
mid = (start + end) // 2
if L[mid] >= X:
end = mid
else:
start = mid + 1
return len(L) - end
def solution(info, query):
answer = []
db = {}
db['cpp'] = {}
db['java'] = {}
db['python'] = {}
langs = ['cpp', 'java', 'python', '-']
jobs = ['backend', 'frontend', '-']
exps = ['junior', 'senior', '-']
foods = ['chicken', 'pizza', '-']
db = {}
for lang in langs:
db[lang] = {}
for job in jobs:
db[lang][job] = {}
for exp in exps:
db[lang][job][exp] = {}
for food in foods:
db[lang][job][exp][food] = []
for info_ in info:
lang, job, exp, food, score = info_.split(' ')
score = int(score)
db[lang][job][exp][food].append(score)
db['-'][job][exp][food].append(score)
db[lang]['-'][exp][food].append(score)
db[lang][job]['-'][food].append(score)
db[lang][job][exp]['-'].append(score)
db['-']['-'][exp][food].append(score)
db['-'][job]['-'][food].append(score)
db['-'][job][exp]['-'].append(score)
db[lang]['-']['-'][food].append(score)
db[lang]['-'][exp]['-'].append(score)
db[lang][job]['-']['-'].append(score)
db['-']['-']['-'][food].append(score)
db['-']['-'][exp]['-'].append(score)
db['-'][job]['-']['-'].append(score)
db[lang]['-']['-']['-'].append(score)
db['-']['-']['-']['-'].append(score)
for lang in langs:
for job in jobs:
for exp in exps:
for food in foods:
db[lang][job][exp][food] = sorted(db[lang][job][exp][food])
for q in query:
cnt = 0
q = q.split(' ')
lang = q[0]
job = q[2]
exp = q[4]
food = q[6]
score = int(q[7])
picks = db[lang][job][exp][food]
idx = get_index(picks, score)
answer.append(idx)
return answer