완전탐색

0hyo·2021년 12월 31일
0

완전탐색

말그대로 완전탐색!! 가능한 모든 경우의 수를 다 체크해서 정답을 찾는 방법

완전탐색 활용방법

  • 해결하고자 하는 문제의 가능한 경우의 수를 대략적으로 계산한다.

  • 가능한 모든 방법을 다 고려한다.

    • Brute Force 기법 - 반복 / 조건문을 활용해 모두 테스트하는 방법
    • 순열(Permutation) - n개의 원소 중 r개의 원소를 중복 허용 없이 나열하는 방법 (순서중요!)
    • 재귀 호출
    • 2진수 표현 기법을 활용하는 방법
    • BFS, DFS를 활용하는 방법
  • 실제 답을 구할 수 있는지 적용한다.

프로그래머스 level1 모의고사
answers 정답이 담긴 배열
수포자 3명의 답안은 아래와 같이 반복됨
정답과 해당 답안지가 몇개가 일치하는지 구해야한다.
answers의 길이에 따라 수포자들의 답안지 길이도 같음!

function solution(answers) {
   let result = [];
   let answerNum = [0,0,0];
   let first = [1,2,3,4,5];
   let second = [2, 1, 2, 3, 2, 4, 2, 5];
   let third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    //정답지에 수포자들의 정답이 있는지 확인
    for(let i =0; i < answers.length; i++){
        if(answers[i] === first[i%5]){
            answerNum[0]++
        }
        if(answers[i] === second[i%8]){
              answerNum[1]++
        }
        if(answers[i] === third[i%10]){
            answerNum[2]++
        }
    }
    let maxNum = Math.max(...answerNum)
    answerNum.map((el, idx)=>{
        if(maxNum === el){
            result.push(idx+1)
        }
    })
     return result; 
}
profile
행동하는 프론트엔드 개발자 되어가는 중 👊 파이팅!!

0개의 댓글