[프로그래머스 lev1/JS] 모의고사

woolee의 기록보관소·2022년 11월 8일
0

알고리즘 문제풀이

목록 보기
63/178

문제 출처

프로그래머스 lev1 - 모의고사

문제

나의 풀이

1차시도 (런타임 에러)

function solution(answers) {
  let stu1 = [1, 2, 3, 4, 5];
  let stu2 = [2, 1, 2, 3, 2, 4, 2, 5];
  let stu3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
  let sol = [0, 0, 0];
  
  function MathTest (L, idx, K, arr, num) {
    if (L===answers.length) return;
    else {
      if (answers[K]===arr[idx]) {
        sol[num-1]++;
      } 
      if (idx===arr.length-1) idx=0;
      else idx++;

      MathTest(L+1, idx, K+1, arr, num);
    }
  }
  MathTest(0, 0, 0, stu1, 1);
  MathTest(0, 0, 0, stu2, 2);
  MathTest(0, 0, 0, stu3, 3);

  let max = Math.max(...sol);
  let answer = [];

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

console.log(solution([1, 2, 3, 4, 5]));
// console.log(solution([1, 3, 2, 4, 2]));

2차시도 (통과/재귀 안 쓰고 풀기)

function solution(answers) {
  let stu1 = [1, 2, 3, 4, 5];
  let stu2 = [2, 1, 2, 3, 2, 4, 2, 5];
  let stu3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
  let sol = [0, 0, 0];

  function MathTest (arr, num) {
    let k=0;
    for (let i=0; i<answers.length; i++) {
      if (answers[k]===arr[i]) {
        sol[num]++;
      }
      k++; 
      if (k===answers.length) return;
      else {
        if (i===arr.length-1) i=-1;
      }
    }
  }
  MathTest(stu1, 0);
  MathTest(stu2, 1);
  MathTest(stu3, 2);

  let answer = [];
  let max = Math.max(...sol);

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

console.log(solution([1, 2, 3, 4, 5]));
// console.log(solution([1, 3, 2, 4, 2]));

다른 풀이

단순하게 i%a1.length 하면 끝나는 거였다.

function solution(answers) {
    var answer = [];
    var a1 = [1, 2, 3, 4, 5];
    var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
    var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

    var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
    var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
    var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
    var max = Math.max(a1c,a2c,a3c);

    if (a1c === max) {answer.push(1)};
    if (a2c === max) {answer.push(2)};
    if (a3c === max) {answer.push(3)};


    return answer;
}
function solution(answers) {
    var answer = [];
    var user = [[1,2,3,4,5], [2,1,2,3,2,4,2,5], [3,3,1,1,2,2,4,4,5,5]];
    var point = [0,0,0]

    for(var i=0; i<answers.length; i++) {
        if(user[0][i%5] == answers[i]) {
            point[0]++;
        }
        if(user[1][i%8] == answers[i]) {
            point[1]++;
        }
        if(user[2][i%10] == answers[i]) {
            point[2]++;
        }
    }

    var max = Math.max.apply(null, point);

    for(var i=0; i<3; i++) {
        if(point[i] == max)
            answer.push(i+1);
    }

    return answer;
}
profile
https://medium.com/@wooleejaan

0개의 댓글