[프로그래머스] 순위검색

joon_1592·2022년 1월 17일
0

알고리즘

목록 보기
15/51

프로그래머스 - 순위검색

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
    # end is position
    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:
        #print(info_)
        lang, job, exp, food, score = info_.split(' ')
        score = int(score)

        db[lang][job][exp][food].append(score)
        
        # 1
        db['-'][job][exp][food].append(score)
        db[lang]['-'][exp][food].append(score)
        db[lang][job]['-'][food].append(score)
        db[lang][job][exp]['-'].append(score)
        
        # 2
        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)
        
        # 3
        db['-']['-']['-'][food].append(score)
        db['-']['-'][exp]['-'].append(score)
        db['-'][job]['-']['-'].append(score)
        db[lang]['-']['-']['-'].append(score)
        
        # 4
        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]
        #print(picks, score)
        # picks = [0, 1, 1, 8]
        # score = -1
        idx = get_index(picks, score)
        answer.append(idx)
    #print(answer)
    return answer
profile
공부용 벨로그

0개의 댓글