프로그래머스: 모의고사(완전탐색)

송유나·2021년 1월 12일
0

1. 문제



2. 해결과정

  • 난 아직 알고리즘의 'ㅇ'자도 모르는 것 같다. 1레벨이 이렇게 어려운 것인가ㅠㅠ
  • 어떻게 풀어가야 하는지 느낌은 약간 왔는데 혼자 할 수 없을 거라 판단해서 검색 후 어떻게 풀어가는지 느낌을 살폈다.(for문 사용한 코드를 보고 힌트를 얻음)
  • 보통 내가 코드를 작성하면 제한 조건에 걸려서 테스트 케이스에 실패하는 경우가 많았는데 이 문제에서 신경 쓸 만한 건 결과값 오름차순이었다.
    =>난 차례대로 push를 사용했기 때문에 자동 오름차순

3. 작성 코드

// 완전탐색
function solution(answers) {
    var answer = [];
    var num1 = [1,2,3,4,5]              //수포자1 패턴
    var num2 = [2,1,2,3,2,4,2,5]        //수포자2 패턴 
    var num3 = [3,3,1,1,2,2,4,4,5,5]    //수포자3 패턴
    var count = [0,0,0]
    
    for(var i=0; i<answers.length; i++){    //답 대조 => 맞은 답 개수 카운트
        if(num1[i%5] == answers[i]){
            count[0]++;
        }
        if(num2[i%8] == answers[i]){
             count[1]++;
         }
        if(num3[i%10] == answers[i]){
            count[2]++;
        }
    }
    
    var index
    index = Math.max(count[0], count[1], count[2])  //가장 많이 맞춘 개수 반환
    
    for(var i=0; i<count.length; i++){      //가장 많이 맞춘 개수가 위치한 배열 번호(=수포자 번호) 반환 후 answer에 push
        if(count[i] == index){
            answer.push(i+1)
        }
    }
    
    return answer;
}

4. 활용한&배운 것

  1. for문을 중심으로 문제 해결
  2. 산술 연산자의 사용: %
  3. 최댓값 구하는 메서드: Math.max

5. 배울 것

  1. filter: filter를 사용해서 문제를 푼 사람들의 코드를 많이 봤는데 지난번에 사용해보고 그대로 까먹어서 코드해석을 못하기 때문에 다시 공부해야 함! 끝❗
profile
개발자를 꿈꾸는 햇병아리입니다.

0개의 댓글