[Python] 프로그래머스 - Weekly Challenge 4주차
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/84325?language=python3
# 위클리 챌린지 4주차 문제이다. (3주차 문제는 너무 헬이어서 못 풀었다..)
# 문제에서 시킨대로 단순 구현만 하면 되는 문제이다. 어차피 문제에서 주어지는 table은 그대로라고 했으므로
SI, CONTENTS, HARDWARE, PORTAL, GAME의 딕셔너리를 미리 만들어 놓고 시작했다.
1. 선호하는 언어의 번호와 선호도를 tmp배열에 넣어준다.
예제1번 같은 경우 tmp에는 [[1, 7], [3, 5], [7, 5]] 이 들어가있다.
2. SI부터 GAME까지 직업군을 반복문을 통해 돌며 pre_sum에 (각 직업군의 언어의 선호도 * 언어점수)
를 더해준다.
3. pre[0]부터 pre[4]중 max(pre)값과 같은 값을 ans에 넣어주고 총합이 같은 직업군이 여러개일 경우
이름이 사전순으로 가장 빠른 직업군을 return해야하므로 ans를 sort해주고 ans[0]을 return해준다.
def solution(table, languages, preference):
tmp, pre = [], []
answer = {0: 'SI', 1: 'CONTENTS', 2: 'HARDWARE', 3: 'PORTAL', 4: 'GAME'}
languages_dict = {'PYTHON': 1, 'C': 2, 'C++': 3, 'C#': 4, 'JAVA': 5, 'JAVASCRIPT': 6, 'SQL': 7, 'KOTLIN': 8, 'PHP': 9}
SI = {1: 2, 2: 0, 3: 0, 4: 1, 5: 5, 6: 4, 7: 3, 8: 0, 9: 0}
CONTENTS = {1: 3, 2: 0, 3: 1, 4: 0, 5: 4, 6: 5, 7: 2, 8: 0, 9: 0}
HARDWARE = {1: 3, 2: 5, 3: 4, 4: 0, 5: 2, 6: 1, 7: 0, 8: 0, 9: 0}
PORTAL = {1: 3, 2: 0, 3: 0, 4: 0, 5: 5, 6: 4, 7: 0, 8: 2, 9: 1}
GAME = {1: 0, 2: 2, 3: 5, 4: 4, 5: 1, 6: 3, 7: 0, 8: 0, 9: 0}
for i, p in zip(languages, preference):
tmp.append([languages_dict[i], p])
for i in (SI, CONTENTS, HARDWARE, PORTAL, GAME):
pref_sum = 0
for l in tmp:
pref_sum += i[l[0]] * l[1]
pre.append(pref_sum)
ans = []
for i in range(5):
if pre[i] == max(pre):
ans.append(answer[i])
ans.sort()
return ans[0]
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - Weekly Challenge 5주차 (0) | 2021.08.31 |
---|---|
[Python] 프로그래머스 - 합승 택시 요금 (0) | 2021.08.30 |
[Python] 프로그래머스 - 괄호 변환 (1) | 2021.08.27 |
[Python] 프로그래머스 - 문자열 압축 (0) | 2021.08.26 |
[Python] 프로그래머스 - 자물쇠와 열쇠 (0) | 2021.08.24 |
TAGS.