4주차_직업군 추천하기

김현민·2021년 9월 18일
0

Algorithm

목록 보기
88/126
post-thumbnail

내 코드


// language에 따라서 preference값을 곱해주는 함수
function calcScore(lan, index, languages, preference) {
  languages.indexOf(lan)
  const indexLan = languages.indexOf(lan)
  let sum = 0

  if (indexLan !== -1) {
    const prefScore = preference[indexLan]
    sum = prefScore * index
    return sum
  } else {
    return sum
  }
}


// 0열의 값을 추출하기 위한 함수
function work(new_table, maxIndex) {
  let anaswer = []

  maxIndex.map((v) => {
    if (v !== -1) {
      anaswer.push(new_table[v][0])
    }
  })

  anaswer.sort()
  return anaswer[0]
}

function solution(table, languages, preference) {
  let answer = ""
  let newTable = []
  let scores = []
  let result = []
  
//  문자열로 된 배열 띄어쓰기 기준으로 다시 배열로 정렬
  table.map((v) => {
    newTable.push(v.split(" "))
  })

  
  for (let i = 0; i < newTable.length; i++) {
    for (let j = 1; j <= newTable[i].length - 1; j++) {
      scores.push(
        calcScore(newTable[i][j], newTable[i].length - j, languages, preference)
      )
    }
    
    // 각 언어 점수들의 합을 구하는 부분
    let res = scores.reduce((acc, cur) => acc + cur)
    
    // 총합을 result 변수에 담는다
    result.push(res)
    
    scores = []
  }

  const max = Math.max(...result)

  //최댓값의 index를 구하는 부분, 
  result.indexOf(max)
  
  // 최댓값이 2개 이상일 경우가 존재할 경우 
  let maxIndex = result.map((v, index) => (v === max ? index : -1))
  
  
  answer = work(newTable, maxIndex)

  return answer
}

solution(
  [
    "SI JAVA JAVASCRIPT SQL PYTHON C#",
    "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++",
    "HARDWARE C C++ PYTHON JAVA JAVASCRIPT",
    "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP",
    "GAME C++ C# JAVASCRIPT C JAVA",
  ],
  ["PYTHON", "C++", "SQL"],
  [7, 5, 5]
)

// solution(
//   [
//     "SI JAVA JAVASCRIPT SQL PYTHON C#",
//     "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++",
//     "HARDWARE C C++ PYTHON JAVA JAVASCRIPT",
//     "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP",
//     "GAME C++ C# JAVASCRIPT C JAVA",
//   ],
//   ["JAVA", "JAVASCRIPT"],
//   [7, 5]
// )
profile
Jr. FE Dev

0개의 댓글