[프로그래머스] Level1_4주차
직업군 추천하기
문제설명
개발자가 사용하는 언어와
언어 선호도
를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다.아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에
직업군 언어 점수
를 부여한 표입니다.예를 들면, SQL의 SI
직업군 언어 점수
는 3점이지만 CONTENTS직업군 언어 점수
는 2점입니다. SQL의 HARDWARE, PORTAL, GAME직업군 언어 점수
는 0점입니다.
직업군 언어 점수
를 정리한 문자열 배열table
, 개발자가 사용하는 언어를 담은 문자열 배열languages
,언어 선호도
를 담은 정수 배열preference
가 매개변수로 주어집니다. 개발자가 사용하는 언어의언어 선호도
x직업군 언어 점수
의 총합이 가장 높은 직업군을 return 하도록 solution 함수를 완성해주세요. 총합이 같은 직업군이 여러 개일 경우, 이름이 사전 순으로 가장 빠른 직업군을 return 해주세요.
제한사항
table
의 길이 = 5
- table의 원소는
"직업군 5점언어 4점언어 3점언어 2점언어 1점언어"
형식의 문자열입니다.직업군
,5점언어
,4언어
,3점언어
,2점언어
,1점언어
는 하나의 공백으로 구분되어 있습니다.table
은 모든 테스트케이스에서 동일합니다.- 1 ≤
languages
의 길이 ≤ 9
languages
의 원소는"JAVA"
,"JAVASCRIPT"
,"C"
,"C++"
,"C#"
,"SQL"
,"PYTHON"
,"KOTLIN"
,"PHP"
중 한 개 이상으로 이루어져 있습니다.languages
의 원소는 중복되지 않습니다.preference
의 길이 =languages
의 길이
- 1 ≤
preference
의 원소 ≤ 10preference
의 i번째 원소는languages
의 i번째 원소의언어 선호도
입니다.- return 할 문자열은
"SI"
,"CONTENTS"
,"HARDWARE"
,"PORTAL"
,"GAME"
중 하나입니다.
문제와 제한사항이 길지만 잘 읽는다면 어렵지 않게 풀 수 있는 문제이다.
먼저 각 직업군 별 언어를 공백 기준으로 스플릿한 다음, 이를 temp
에 넣는다.
그리고 언어의 각 순서에 따라 5점부터 1점까지 부여하기 위한 score의 계산법은 다음과 같다.
for i in range(0, len(table)):
temp = table[i].split()
for j in range(0, len(temp)):
for k in range(0, len(languages)):
if temp[j] == languages[k]:
score += ((6 - j) * preference[k])
else:
score += 0
이후 가장 큰 점수를 얻은 언어를 확인하고 이에 따라 return해 준다.
return하는 과정에서 모든 언어에 대한 if문을 사용해 코드가 좀 지저분한 느낌이 든다.
사용하지 않고 케이스별로 출력할 수 있는 방법을 고민해봐야 할 것 같다..
def solution(table, languages, preference):
answer = ''
temp = []
pref = []
score = 0
for i in range(0, len(table)):
temp = table[i].split()
for j in range(0, len(temp)):
for k in range(0, len(languages)):
if temp[j] == languages[k]:
score += ((6 - j) * preference[k])
else:
score += 0
pref.append(score)
score = 0
max = pref[0]
lan_temp = []
for i in range(1, len(pref)):
if max <= pref[i]:
max = pref[i]
if pref[0] == max:
lan_temp.append('SI')
if pref[1] == max:
lan_temp.append('CONTENTS')
if pref[2] == max:
lan_temp.append('HARDWARE')
if pref[3] == max:
lan_temp.append('PORTAL')
if pref[4] == max:
lan_temp.append('GAME')
lan_temp.sort()
answer = lan_temp[0]
return answer
Author And Source
이 문제에 관하여([프로그래머스] Level1_4주차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@eegaxxhxx/프로그래머스-Level14주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)