티스토리 뷰
프로그래머스 '직업군 추천하기' 문제풀이입니다.
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/84325
● 문제 간단 설명
언어 배열, 선호도 배열과 직업군 언어 점수 배열이 주어지면 언어 배열에 존재하는 언어 점수와 선호도 배열 점수를 곱해 최대 점수를 얻은 언어를 출력합니다. 최대 점수인 언어가 2개 이상일 경우 사전 순으로 빠른 언어를 출력합니다.
● 문제 해결 방향
table에 주어진 요소들이 ['직업군', '점수' * 5개]이런 구성으로 되어있어
반복문을 돌리면서 직업군과 점수로 나누어주고
그다음 언어 배열에 있는 언어들의 점수를 계산하여 총합 리스트에 넣어주었습니다.
마지막에 최댓값에 해당하는 직업군 인덱스를 뽑아 직업군을 확인한 후
정렬한 후 첫 번째 값을 뽑아주는 방식으로 작성하였습니다.
● 문제 해결 코드
def solution(table, languages, preference):
unit_score = [5, 4, 3, 2, 1]
part_name = []
scores = []
for i in table:
table = 0
i = i.split(" ")
part_name.append(i[0])
job_group = i[1:]
score = 0
for j in range(len(languages)):
if languages[j] in job_group:
index = job_group.index(languages[j])
score += preference[j]* unit_score[index]
scores.append(score)
answer = sorted([part_name[i] for i in range(len(scores)) if scores[i] == max(scores)])[0]
return answer
먼저 점수와 리스트와 각 직업군의 언어 배열이 들어갈 part_name 배열과, 각 언어의 점수가 들어갈 part_name배열을 빈 배열로 선언해주었습니다.
그리고 반복문으로 테이블의 요소를 하나씩 받아왔는데
테이블의 요소는 [직업군, 언어, 언어, 언어, 언어, 언어] 형식으로 되어있습니다.
그다음 직업군과 언어를 분리해주었고
언어 배열과 선호도 점수를 가지고 각 직업군 별 총점수를 계산하였다
그리고 마지막에 총점 중 가장 높은 점수를 가지고 있는 직업군을 뽑아내고
마지막에 정렬을 사용하여 사전식으로 가장 앞에 있는 요소를 return 해주었습니다.
● 알게 된 것들 및 아쉬운 점
이번 문제에서는 알게 되었다는 것보다
항상 반복문을 많이 사용하고 좀 더 간단한 알고리즘으로 풀 수 있을 문제를
같은 방식으로 풀어낸다는 느낌이 들었습니다.
쉬운 문제를 풀어도 좀 더 효율적으로 해결할 수 있는 방법을 찾도록 노력해야 할 것 같습니다.
이상 프로그래머스 '직업군 추천하기' 문제 풀이였습니다.
더 좋은 풀이나 설명이 잘못된 부분이 있으면 알려주세요!
감사합니다.
'PYTHON' 카테고리의 다른 글
[프로그래머스/PYTHON] 모음 사전 (0) | 2021.09.02 |
---|---|
[프로그래머스/PYTHON] 상호 평가 (0) | 2021.09.02 |
[프로그래머스/PYTHON] 방문길이 (0) | 2021.03.10 |
[프로그래머스/PYTHON] 다음 큰 숫자 (0) | 2021.03.02 |
[프로그래머스/PYTHON] 최솟값 만들기 (0) | 2021.03.02 |
- Total
- Today
- Yesterday
- clean code
- Repository Pattern
- reactrouter
- js
- SOAP API
- webpack
- React.memo
- AxiosInterceptor
- programmers
- TypeScript
- Vue.js
- bundler
- Preloading
- 상호평가
- GraphQL
- 백준
- React
- 파이썬
- 문제풀이
- redux-thunk
- v-for
- error
- Vuex
- redux
- 프로그래머스
- Transpiler
- 알고리즘
- SPA
- Vue
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |