[프로그래머스] 수포자

자바스크립트의 소트 함수 사용하기

파이썬처럼 쉽게 소트되지 않는다. 소트되는 방법을 함수로 정의하는 과정이 필요하다.

오름차순 정렬

sortobj.sort((a,b) => {
    return b[1] - a[1]
  })

내림차순 정렬은 a, b 순서를 바꿔주면 된다.

전체 소스코드

function solution(answers) {
  function supo1(idx) {
    if (idx % 5 == 0) {
      return 1
    } else if (idx % 5 == 1) {
      return 2
    } else if (idx % 5 == 2) {
      return 3
    } else if (idx % 5 == 3) {
      return 4
    } else if (idx % 5 == 4) {
      return 5
    }
  }
  function supo2(idx) {
    if (idx % 2 == 0) {
      return 2
    } else {
      if (idx % 8 == 1) {
        return 1
      } else if (idx % 8 == 3) {
        return 3
      } else if (idx % 8 == 5) {
        return 4
      } else return 5
    }
  }
  function supo3(idx) {
    if (idx % 10 == 0 || idx % 10 == 1) {
      return 3
    } else if (idx % 10 == 2 || idx % 10 == 3) {
      return 1
    } else if (idx % 10 == 4 || idx % 10 == 5) {
      return 2
    } else if (idx % 10 == 6 || idx % 10 == 7) {
      return 4
    } else return 5
  }
  var answers = answers
  var answer = [];
  var checkbox = { 1: 0,2: 0,3: 0 }
  answers.forEach((a, idx) => {
    if (a == supo1(idx)) {
      checkbox[1]++
    }
    if (a == supo2(idx)) {
      checkbox[2]++
    }
    if (a == supo3(idx)) {
      checkbox[3]++
    }
  })
  
  var sortobj = []
  for (var number in checkbox) {
    sortobj.push([number, checkbox[number]])
  }
  sortobj.sort((a,b) => {
    return b[1] - a[1]
  })
  var maxResult = sortobj[0][1]
  sortobj.forEach(arr => {
    if (arr[1] == maxResult) {
      answer.push(Number(arr[0]))
    }
  })
  answer.sort((a,b) => {return b[1]-a[1]})

  return answer;
}

좋은 웹페이지 즐겨찾기