코딩 테스트/프로그래머스 level1

모의고사

fullfish 2022. 9. 8. 02:56

코드

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 scoreArr = [0, 0, 0];
  let resultArr = [];

  for (let i = 0; i < answers.length; i++) {
    if (answers[i] === stu1[i % 5]) scoreArr[0]++;
    if (answers[i] === stu2[i % 8]) scoreArr[1]++;
    if (answers[i] === stu3[i % 10]) scoreArr[2]++;
  }

  let max = Math.max(...scoreArr);
  while (scoreArr.indexOf(max, 0) !== -1) {
    resultArr.push(scoreArr.indexOf(max, 0) + 1);
    scoreArr[scoreArr.indexOf(max, 0)] = -1;
  }
  return resultArr;
}

풀고보니 굳이 while내에서 max값 확인한것을 -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 scoreArr = [0, 0, 0];
  let resultArr = [];

  for (let i = 0; i < answers.length; i++) {
    if (answers[i] === stu1[i % 5]) scoreArr[0]++;
    if (answers[i] === stu2[i % 8]) scoreArr[1]++;
    if (answers[i] === stu3[i % 10]) scoreArr[2]++;
  }

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

이게 좀더 깔끔하다

'코딩 테스트 > 프로그래머스 level1' 카테고리의 다른 글

문자열 내 마음대로 정렬하기  (0) 2022.09.08
[1차] 비밀지도  (0) 2022.09.08
다트 게임  (0) 2022.09.08
크레인 인형뽑기 게임  (0) 2022.09.08
성격 유형 검사하기  (0) 2022.09.08