개발자로 전향중

프로그래머스[Level1] 모의고사 본문

자료구조&알고리즘

프로그래머스[Level1] 모의고사

hovinee 2022. 1. 19. 20:17

일단 abc를 다시 정의해야함

let a = [1,2,3,4,5]
let b = [2,1,2,3,2]
let c = [3,3,1,1,2]

let answer = [1,2,3,4,5]

let aRanswer = []
let bRanswer = []
let cRanswer = []

let result = 0



for(let i=0;i<answer.length;i++){
  if(a[i]==answer[i]){ 
    aRanswer.push(a[i])             //[1,2,3,4,5]
  } else if(b[i]==answer[i]){
    bRanswer.push(b[i])             //[]
  } else if(b[i]==answer[i]){
    cRanswer.push(c[i])             //[]
  }
}

if(aRanswer.length>bRanswer.length && aRanswer.length>cRanswer.length) {
   result = [1]
} else if(bRanswer.length>aRanswer.length && bRanswer.length>cRanswer.length) {
   result = [2]
} else if(cRanswer.length>bRanswer.length && cRanswer.length>aRanswer.length) {
   result = [3]
} else if(aRanswer.length>=bRanswer.length && bRanswer.length>=cRanswer.length) {
   result = [1,2,3]
}

console.log(result)

코드

function solution(answers) {
    var answer = [];
    var list = [
        [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(answers[i] === list[0][i%5])
            point[0]++;
        if(answers[i] === list[1][i%8])
            point[1]++;
        if(answers[i] === list[2][i%10])
            point[2]++;
    }
    var max =0;
    for(var j=0; j<point.length; j++){
        if(point[j] > max)
            max = point[j];
    }
    for(var k=0; k<point.length; k++){
        if(max===point[k])
            answer.push(k+1);
    }
    return answer;
}

해설

  1. 수포자 1,2,3의 답이 반복되므로 찍은답을 배열로 저장
  2. 점수를 계산하기 위한 point 배열 생성
  3. 정답배열을 돌면서 각자 맞춘 갯수 저장.
  4. 가장 많이 맞춘 개수 max 저장.
  5. 처음부터 순서대로 돌면서 point가 max와 같으면 answer에 push.