소스 코드
# 모든 경우의 테이블은 동일
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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제풀이.프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩] 기능개발 - PYTHON (0) | 2021.08.25 |
---|---|
[프로그래머스 코딩] 오픈채팅방 - PYTHON (0) | 2021.08.24 |
[프로그래머스 코딩] 비밀 지도 - PYTHON (0) | 2021.08.22 |
[프로그래머스 코딩] 다트 게임 - PYTHON (0) | 2021.08.21 |
[프로그래머스 코딩] 튜플 - PYTHON (0) | 2021.08.20 |