고민중인 문제2

Dongs·2023년 2월 26일
0

프로그래머스 1단계

문제명) 모의고사 (완전탐색)

function solution(arr) {
    var answer = [];
    let p1 = [1,2,3,4,5];
    let p2 = [2,1,2,3,2,4,2,5];
    let p3 = [3,3,1,1,2,2,4,4,5,5];  //수포자 3명의 답 찍는 패턴.
    let cnt1 = 0; //p1 몇개 맞췄는지 카운트.
    let cnt2 = 0; //p2 몇개 맞췄는지 카운트.
    let cnt3 = 0; //p3 몇개 맞췄는지 카운트.
    
    let pIdx = 0; //수포자배열의 인덱스.
    
    for(let i=0; i<arr.length; i++){ //p1
        if(p1[pIdx] == arr[i]){
            cnt1 += 1;
        }   //같으면 맞춘 갯수 ++
        if(pIdx == p1.length-1){
            pIdx = -1;
        }
        pIdx++;
    }
    pIdx = 0;
    
    for(let i=0; i<arr.length; i++){ //p2
        if(p2[pIdx] == arr[i]){
            cnt2 += 1;
        }   //같으면 맞춘 갯수 ++
        if(pIdx == p2.length-1){
            pIdx = -1;
        }
        pIdx++;
    }
     pIdx = 0;
    for(let i=0; i<arr.length; i++){ //p3
        if(p3[pIdx] == arr[i]){
            cnt3 += 1;
        }   //같으면 맞춘 갯수 ++
        if(pIdx == p3.length-1){
            pIdx = -1;
        }
        pIdx++;
    }

    if(cnt1==cnt2 && cnt2==cnt3 && cnt1==cnt3){
        answer.push(1,2,3);
    } else if(Math.max(cnt1, cnt2, cnt3) == cnt1 && cnt1 == cnt2){
        answer.push(1,2);
    } else if(Math.max(cnt1, cnt2, cnt3) == cnt2 && cnt3){
        answer.push(2,3);
    } else if(Math.max(cnt1, cnt2, cnt3) == cnt3 && cnt3 == cnt1){
        answer.push(1,3);
    } else {
        if(Math.max(cnt1, cnt2, cnt3) == cnt1){
            answer.push(1);
        } else if(Math.max(cnt1, cnt2, cnt3)==cnt2){
            answer.push(2);
        } else if(Math.max(cnt1, cnt2, cnt3) == cnt3){
            answer.push(3);
        }
    }
  
        
        
        
    return answer.sort((a,b) => a-b);
}

https://school.programmers.co.kr/learn/courses/30/lessons/42840

현재 풀이

  • 3명의 수포자의 답 찍는 패턴의 배열 p1, p2, p3 생성
  • 매개변수로 주어진 문제의 답 arr 을 각 수포자 p1, p2, p3의 배열을 대상으로 반복문을 돌려 맞은 답이 몇 개인지 체크하여 cnt1, cnt2, cnt3 증가연산
  • 마지막으로 조건문으로 answer에 답을 가장 많이 맞춘 수포자 번호를 추가해줬다.

가장 많이 맞춘 사람이 여러명일 경우의 수를 모두 생각하여 answer 배열에 push 를 했는데 테스트케이스 5,7번이 빗나간다..
뭐가 문제일까?

profile
자대고 css 하는 프론트엔드 개발자

0개의 댓글