알고리즘/문제풀이
[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. 아이디어 정리
- 모든 직군에 대한 점수를 dict화 해서 저장한다.
- 모든 직군별 언어 선호도 * 직업군 언어 점수 총합을 구하여 가장 큰 값이 나올 때마다 갱신해 준다.
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에 넣어서 관리 후 점수만 계산하면 되는 문제
반응형