반응형
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- nextjs
- HTML
- Prettier
- From
- level1
- Javasript
- eslint
- Challenge
- Weekly
- 알고리즘
- js
- 리액트
- redux-toolkit
- 폼
- split
- algorithm
- solution
- form
- next
- javascript
- React
- programmers
- Collapse
- array
- MaterialUI
- javscript
- 직업군 추천하기
- 상호 평가
- component
- Weekly Challenge
Archives
- Today
- Total
기록
[Weekly Challenge 2021.08.23 ~ 2021.08.29] 4주차 직업군 추천하기 본문
Algorithm/Programmers
[Weekly Challenge 2021.08.23 ~ 2021.08.29] 4주차 직업군 추천하기
dev.jung 2021. 9. 1. 15:21문제
입출력 예
풀이
languagesList -> 받아온 table에서 직업군별 언어 리스트를 반환하는 함수.
5점 언어부터를 1점부터로 reverse 시켜서 반환.
split으로 array 배열로 만들어준후 shift로 첫번째 인덱스인 직업군을 제외시켜서 반환
jobScore -> 각 직업군별 언어선호도 * 언어점수를 반환하는 함수
개발자가 사용하는 언어가 직업군별 언어리스트에 있을경우 연산한 점수를 반환한다.
indexJob -> 점수가 가장높은 직업군의 인덱스를 구하는 함수 2개 이상일 수 있기때문에 배열로 반환했다.
map을 이용해 현재값이 최대값인지 판별 후 현재 인덱스를 반환하고, 반환하지 않으면 undefined가 반환되기 때문에 filter로 undefined를 거르고 반환한다.
resultJob -> 점수가 가장높은 직업군을 반환하는 함수.
점수가 가장높은 직업군의 인덱스를 가지고 직업군을반환한다.
2개이상일시 사전 순으로 반환해야하기때문에 jobArray를 sort() 시켜준뒤 첫인덱스를 반환한다.
solution -> 만든 함수들로 최종결과값을 반환
function languagesList(table) {
const array = table.split(' ');
array.shift();
return array.reverse();
}
function jobScore(list, languages, preference) {
const length = languages.length;
let score = 0;
for (let i = 0; i < length; i++) {
if (list.indexOf(languages[i]) >= 0) {
score += (list.indexOf(languages[i]) + 1) * preference[i];
}
}
return score;
}
function indexJob(scoreList) {
const scoreMap = scoreList.map((cur, idx) => {
if (cur === Math.max.apply(null, scoreList)) {
return idx;
}
}).filter(cur => cur !== undefined);
return scoreMap;
}
function resultJob(indexArray, table) {
const length = indexArray.length;
const jobArray = [];
for (let i = 0; i < length; i++) {
jobArray.push(table[indexArray[i]].split(' ')[0]);
}
jobArray.sort();
return jobArray[0];
}
function solution(table, languages, preference) {
const tableLength = table.length;
const scoreList = [];
let indexArray;
for (let i = 0; i < tableLength; i++) {
scoreList.push(jobScore(languagesList(table[i]), languages, preference))
}
indexArray = indexJob(scoreList);
return resultJob(indexArray, table);
}
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Level1] 문자열을 정수로 바꾸기 (0) | 2022.01.26 |
---|---|
[Weekly Challenge 2021.08.09 ~ 2021.08.15] 2주차 상호평가 (0) | 2021.08.17 |
[Level1] 수박수박수박수박수박수? (0) | 2021.08.06 |
[Level1] 문자열을 정수로 바꾸기 (0) | 2021.08.06 |
[Level1] 시저 암호 (0) | 2021.08.05 |
Comments