-
[Python] Programmers 직업군 추천하기알고리즘/문제풀이 2021. 9. 4. 15:31728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/84325
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에 넣어서 관리 후 점수만 계산하면 되는 문제
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] Programmers 위클리 챌린지 5 모음 사전 (0) 2021.09.11 [Python] Programmers 키패드 누르기 (0) 2021.09.04 [Python] 백준 1038 감소하는 수 (3) 2021.09.04 [Python] 백준 11659 구간 합 구하기 4 (0) 2021.09.04 [Python] Programmers 자동완성 (0) 2021.08.20