풀이 과정
- 모든 직업군을 탐색하면서 주어진 언어별 선호도와 직업군 언어 점수의 곱셈의 합을 구한다.
- 만약, 이 합계가 최대값인 경우 갱신 / 직업군 이름 저장
- 이 과정에서, 직관적으로 계산하기 위해 파이썬 딕셔너리 활용
- {직업군명 : 점수} 형식으로 저장
- 계산시, 개발자가 선호하는 언어에는 있지만, 직업군에서 선호하는 언어에 없을수도 있음.
- 딕셔너리의 get 메서드를 써서 있는지 확인해주어야 한다.
- 없는 경우에는 계산 생략
- 동점인 경우에는 사전순으로 앞서는걸 정답으로 해주어야 한다.
소스 코드
def solution(table, languages, preference):
answer = ''
score = {languages[i]: preference[i] for i in range(len(languages))}
max_score = 0
for information in table:
inf = information.split()
# 언어별 점수 부여
current_score = {inf[i]: 6-i for i in range(1, len(inf))}
total_score = 0
# 현재 직업에서의 점수 구함
for lan in score.keys():
if current_score.get(lan) != None:
total_score += (current_score[lan] * score[lan])
# 동점이면 사전순으로 앞서는걸 정답으로
if total_score == max_score:
if answer > inf[0]:
answer = inf[0]
# 최대 점수일때 갱신
if total_score > max_score:
max_score = total_score
answer = inf[0]
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ 위클리 챌린지 ] [ 6주차 ] 복서 정렬하기 (0) | 2021.09.08 |
---|---|
[ 위클리 챌린지 ] [ 5주차 ] 모음 사전 (0) | 2021.09.03 |
[ 위클리 챌린지 ] [ 2주차 ] 상호 평가 (0) | 2021.08.19 |
[ Lv 1 ] [ String ] 숫자 문자열과 영단어 (0) | 2021.08.19 |
[ Lv 2 ] 삼각 달팽이 (0) | 2021.08.16 |