[문제 설명]
코딩테스트 연습 - 4주차_직업군 추천하기
개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부
programmers.co.kr
[나의 답안]
def solution(table, languages, preference):
pref_dict = {language : 0 for language in ["JAVA", "JAVASCRIPT", "C", "C++" ,"C#" , "SQL", "PYTHON", "KOTLIN", "PHP"]}
for i, language in enumerate(languages):
pref_dict[language] = preference[i]
max_score = 0
answer = ''
for job in table:
job_total_score = sum([pref_dict[lang] * (5-i) for i, lang in enumerate(job.split(" ")[1:])])
if job_total_score > max_score:
max_score = job_total_score
answer = job[:job.index(' ')]
elif job_total_score == max_score:
answer = sorted([answer, job[:job.index(' ')]])[0]
return answer
최대한 파이써닉 하게 짜려고 노력했다.
먼저, 언어 선호도 점수에 주어진 값들 뿐만 아니라, 주어지지 않은 languages들을 모두 넣어줬다.
9개 밖에 되지 않아서 속도에 큰 영향을 미치지 않을 것 같아, KeyError 없이 쉽게 계산하기 위해 넣어주었다.
그리고 출력 설명에 나온 직업군별 점수 식을
sum([pref_dict[lang] * (5-i) for i, lang in enumerate(job.split(" ")[1:])])로 작성하였다.
i는 0부터 4까지 가기 때문에, 각 직업군 언어 점수(pref_dict[lang]) * 언어 선호도(5-i) 계산 값들을 list로 만들며
list의 sum 값을 job_total_score에 넣었다.
※회고
1. dictionary.get 함수 사용하기
몇 줄 줄임과 동시에, key 값이 존재하지 않을 때 0을 return 해주기 때문에 KeyError를 걱정할 필요 없다.
더보기
def solution(table, languages, preference):
pref_dict = {language : score for language, score in zip(languages, preference)}
max_score = 0
answer = ''
for job in table:
job_total_score = sum([pref_dict.get(lang, 0) * (5-i) for i, lang in enumerate(job.split(" ")[1:])])
if job_total_score > max_score:
max_score = job_total_score
answer = job[:job.index(' ')]
elif job_total_score == max_score:
answer = sorted([answer, job[:job.index(' ')]])[0]
return answer
2. 3주차 문제는 풀지 못했다.
3주차 문제를 2시간 넘게 쓰다가, 결국 못풀어서 4주차로 넘어오게 되었다.
코딩테스트에서 종종 보던 유형이여서, 다른 사람들의 코드를 보고 꼭 이해하려고 한다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 위클리 챌린지 7주차(python) (0) | 2021.09.18 |
---|---|
[프로그래머스] 위클리 챌린지 6주차 : 복서 정렬하기(python) (0) | 2021.09.16 |
[프로그래머스] 위클리 챌린지 5주차 : 모음사전(python) (0) | 2021.09.15 |
[프로그래머스] 위클리 챌린지 2주차 : 상호평가(python) (0) | 2021.09.13 |
[프로그래머스] 위클리 챌린지 1주차 : 부족한 금액 계산하기(python) (0) | 2021.09.13 |