풀이 과정


  1. 모든 직업군을 탐색하면서 주어진 언어별 선호도와 직업군 언어 점수의 곱셈의 합을 구한다.
    • 만약, 이 합계가 최대값인 경우 갱신 / 직업군 이름 저장
    • 이 과정에서, 직관적으로 계산하기 위해 파이썬 딕셔너리 활용
    • {직업군명 : 점수} 형식으로 저장
  2. 계산시, 개발자가 선호하는 언어에는 있지만, 직업군에서 선호하는 언어에 없을수도 있음.
    • 딕셔너리의 get 메서드를 써서 있는지 확인해주어야 한다.
    • 없는 경우에는 계산 생략
  3. 동점인 경우에는 사전순으로 앞서는걸 정답으로 해주어야 한다.

소스 코드


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

+ Recent posts