택시짱의 개발 노트

[프로그래머스] 위클리 챌린지4주차 본문

알고리즘

[프로그래머스] 위클리 챌린지4주차

택시짱 2021. 8. 24. 11:16

링크

https://programmers.co.kr/learn/courses/30/lessons/84325

 

코딩테스트 연습 - 4주차

개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부

programmers.co.kr

 

풀이

 

코드가 너무 지저분한것 같다..

다른 분 들이 작성하신 코드를 보면 내가 작성한 코드가 부끄러워진다...

from collections import defaultdict


def make_language_score_data(table):
    language_scores = defaultdict(dict)
    rank_score = [i for i in range(5, 0, -1)]
    for table_data in table:
        table_list = (''.join(table_data)).split(' ')
        job = table_list.pop(0)
        data = dict(zip(table_list, rank_score))
        language_scores[job] = data

    return language_scores


def calc_score(language_scores, input_datas):
    result_company = defaultdict(set)
    for company, language_data in language_scores.items():
        score_sum = 0
        for l, s in input_datas.items():
            try:
                score_sum += language_data[l] * s
            except KeyError:
                score_sum += 0 * s
        result_company[score_sum].add(company)
    result_company = sorted(result_company.items(), key=lambda x: x[0], reverse=True)
    _, companies = next(iter(result_company))
    return sorted(list(companies)).pop(0)


def solution(table, languages, preference):
    languages_scores = make_language_score_data(table)
    return calc_score(languages_scores, dict(zip(languages, preference)))

반응형

'알고리즘' 카테고리의 다른 글

[프로그래머스] 6주차_복서 정렬하기  (0) 2021.09.18
[백준] - 미로 탈출  (0) 2021.08.29
[프로그래머스] 로또의 최고 순위와 최저 순위도움말  (0) 2021.07.25
스트리미 코테  (21) 2021.01.12
tpay 코테  (0) 2021.01.12
Comments