[Programmers] 직업군 추천

suhyun·2021년 10월 4일
0

백준/프로그래머스

목록 보기
4/81

WeeklyChallenge03

문제 링크

직업군 추천

문제 풀이

1. list만 사용

def solution(table, languages, preference):
    answer = ''
    score = []

    new_list = []
    for i in range(len(table[0].split())-1):
        new_list.append(table[i].split())

    length = len(new_list)
    for i in range(length):
        sum = 0
        for j in range(len(languages)):
            if languages[j] in new_list[i]:
                sum += ((6 - new_list[i].index(languages[j])) * preference[j])

        score.append(sum)

    index = score.index(max(score))
    answer = new_list[index][0]

    m = max(score)
    max_index = [i for i, v in enumerate(score) if v == m]
    max_list = [new_list[i][0] for i in max_index]
    max_list.sort()
    answer = max_list[0]
    return answer
  • 간단히 리스트로만 문제를 풀이함
  • 마지막 부분에서 sort, max를 더 짧게 풀고싶었지만 생각나는게 없어서 일단 제출


2. dictionary와 tuple사용

def solution(table, languages, preference):
    score = {}
    for t in table:
        for lang, pref in zip(languages, preference):
            if lang in t.split():
                score[t.split()[0]] = (6 - t.split().index(lang)) * \
                    pref + score.get(t.split()[0], 0)

    sorted_score = sorted(
        score.items(), key=lambda item: (-item[1], item[0]))
    return sorted_score[0][0]
  • languages와 preference의 갯수가 같다는 부분에서 tuple을 생각해냄
  • key와 value가 명확하기 때문에 점수를 계산하고 저장하는 부분에서 dictionary이용

느낀점

곧바로 좋은 방법을 생각해내진 못했지만
그래도 조금 생각하다 보니깐 더 좋은 방법이 생각나긴 했다.
이렇게 뻘짓도 해보고 쉬운문제라도 계속 쳐다보다보면
나중에는 한번에 풀 수 있지않을까:)

profile
꾸준히 하려고 노력하는 편 💻

0개의 댓글