[ProblemSolving] 프로그래머스 위클리챌린지 - 4주차 직업군 추천하기

문제 설명은 생략하겠습니다. 링크를 클릭하세요.

문제 링크

입출력 예

tablelanguagespreferenceresult
["SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JAVASCRIPT C JAVA"]["PYTHON", "C++", "SQL"][7, 5, 5]"HARDWARE"
["SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JAVASCRIPT C JAVA"]["JAVA", "JAVASCRIPT"][7, 5]"PORTAL"

나의 풀이


쉬웠다..
3주차는 귀차나서 나중에 포스팅 예정..

입력 받은 table은 일차리스트인데, tables를 생성하여 이차리스트로 만들어 놓으면 구현이 쉬워진다.

tables를 돌면서, languages, preference를 하나씩 뽑아서 tables[i]에 languages[i]가 있는지를 탐색하고 있다면 합계를 누적한다.

total은 직업군에 대한 점수 총합이 나열되고, 가장 높은 총합을 갖고 있는 직업군을 찾는다.

사전순으로 가장 앞에 있는 원소를 리턴한다.

코드

def solution(table, languages, preference):
    answer = [] ; total = [] ; tables = []
    sum_ =0
    tables = [i.split() for i in table]    
    for t in tables:
        for lang, pref in zip(languages, preference):
            if lang in t:
                sum_ += (6- t.index(lang))*pref
        total.append(sum_)
        sum_ = 0 
    for i in range(len(total)):
        if max(total) == total[i]:
            answer.append(tables[i][0])
    answer.sort()
    return answer[0]

좋은 웹페이지 즐겨찾기