모의고사

김현민·2021년 9월 15일
0

Algorithm

목록 보기
81/126
post-thumbnail

내 코드

function solution(answers) {
  var answer = []

  var student = [
    [1, 2, 3, 4, 5],
    [2, 1, 2, 3, 2, 4, 2, 5],
    [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
  ]
  let idx = 0
  let cnt = 0
  let result = []
  
  for (let k = 0; k < student.length; k++) {
    for (let i = 0; i < student[k].length; i++) {
      if (idx === answers.length) {
        idx = 0
      }
      if (answers[idx] === student[k][i]) {
        cnt++
      }
      idx++
    }
    result.push(cnt)
    cnt = 0
    idx = 0
  }

  let max = -100

  for (let i = 0; i < result.length; i++) {
    if (max <= result[i]) {
      max = result[i]
      answer.push(i + 1)
    }
  }

  answer.sort()
  return answer
}

solution([1, 3, 2, 4, 2])
// solution([1, 2, 3, 4, 5])

answers도 반복 순환해야 하는줄알았는데, 딱 answers길이만큼만 구하면 되는거였음
12345/12345/12345/... 하면 분면 2번수포자는 1개 맞추는데..
이점이 헷갈렸던 것같다.

function solution(answers) {
  const one = [1, 2, 3, 4, 5]
  const two = [2, 1, 2, 3, 2, 4, 2, 5]
  const three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
  const result = [0, 0, 0]

  const length = answers.length

  for (let i = 0; i < length; i++) {
    if (one[i % 5] === answers[i]) result[0]++
    if (two[i % 8] === answers[i]) result[1]++
    if (three[i % 10] === answers[i]) result[2]++
  }

  const answer = []
  const maxValue = Math.max(...result)

  let index = 0

  for (let i = 0; i < 3; i++) {
    if (maxValue === result[i]) {
      answer[index] = i + 1
      index++
    }
  }

  return answer
}

solution([1, 2, 3, 4, 5])

%로 배열을 순환해서 표현할 수 있다

profile
Jr. FE Dev

0개의 댓글