알고리즘/문제풀이

[Python] Programmers 직업군 추천하기

정찡이 2021. 9. 4. 15:31
728x90

1. 문제 링크

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

 

코딩테스트 연습 - 4주차

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

programmers.co.kr


2. 문제 요약

언어 선호도 * 직업군 언어 점수 총합이 가장 높은 직업군을 리턴한다.


3. 아이디어 정리

  1. 모든 직군에 대한 점수를 dict화 해서 저장한다.
  2. 모든 직군별 언어 선호도 * 직업군 언어 점수 총합을 구하여 가장 큰 값이 나올 때마다 갱신해 준다.

4. 문제 풀이

4-1. 내 풀이

from collections import defaultdict

def solution(table, languages, preference):
"""
:return: 언어 선호도 * 직업군 언어 점수 총합이 높은 직업군
    """
dict_ = defaultdict(defaultdict)
    all_job = list()   # 모든 직업 넣기
    # 1. 모든 직군에 대한 점수를 dict화
    for t in table:
        res = t.split()
        all_job.append(res[0])
        for i, r in enumerate(res[1:]):
            dict_[res[0]][r] = 5 - i
    all_job.sort()

    answer = ['', 0]    # 결과 (직군, 직군 총 점수)
    # 2. 모든 직군별 언어 선호도 * 직업군 언어 점수 총합 구하기
    for job in all_job:
        total = 0
        for language, prefer in zip(languages, preference):
            if language in dict_[job]:
                total += dict_[job][language] * prefer
        if answer[1] < total:
            answer = [job, total]
    return answer[0]

 


5. 결론

  • dict에 넣어서 관리 후 점수만 계산하면 되는 문제
반응형