소스 코드

# 모든 경우의 테이블은 동일
table_lst = [["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"]]
             
# split을 통한 분류 방법
# 다만 모든 테이블은 동일하기 때문에 매번 구하는 것보다
# 한번 구해놓고 사용하는게 낫다고 생각함
for q in range(len(table)):
	table[q] = table[q].split()

def solution(table, languages, preference):
    answer = ''
    max_num = 0
    max_lan = []

    for e in range(5):
        temp_score = 0
        for r in range(len(languages)):
            if languages[r] in table_lst[e]:
                temp_score += preference[r] * (6 - table_lst[e].index(languages[r]))

        if temp_score > max_num:
            max_num = temp_score
            max_lan = [table_lst[e][0]]

        elif temp_score == max_num:
            max_lan.append(table_lst[e][0])

    max_lan.sort()
    answer = max_lan[0]

    return answer

 


해결 방법

1. 테이블의 값은 str형태로 넘어오기 때문에 리스트 형태로 분류

 

2. preference * 점수 값 구해서 최대값인지 확인하기

 

3. max_lan을 정렬해서 사전순으로 배열


느낀 점

split을 사용하면 str을 좀 더 간단하게 분류할 수 있음

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.