[TIL]브루트 포스

yeols·2023년 11월 10일
0

[TIL]

목록 보기
33/72

오늘의 학습 주제는 알고리즘 문제 해결에서 기본적인 기법 중 하나인 브루트 포스(Brute-force) 알고리즘이었다.
이는 완전 탐색(Complete Search)의 일부이다

브루트 포스란?

  • 정의: 모든 가능한 경우를 탐색하면서 결과를 얻는 알고리즘을 의미합니다.
  • 접근 방법: 조건문과 반복문을 사용하여 가능한 모든 시나리오를 검토합니다. 복잡한 알고리즘을 고려하지 않고도 모든 경우를 살펴봅니다.

  • 장점
    - 가능한 모든 경우를 고려하기 때문에 확실한 정답을 찾을 수 있습니다.
    - 복잡한 알고리즘이 필요 없어 빠르게 구현할 수 있습니다.
  • 단점
    - 모든 경우를 고려하기 때문에 효율적이지 못할 수 있습니다.
    - 알고리즘의 실행 시간이 길어질 수 있습니다.

브루트 포스 사용 예시

배열 탐색

배열에서 특정 값을 찾는 문제에서, 브루트 포스 알고리즘은 배열 전체를 탐색하여 값을 찾는 방식으로 문제를 해결합니다.

function findIndex(arr, target) {
    for(let i = 0; i < arr.length; i++){
        if (arr[i] === target) return i;
    }
    return -1;
}

프로그래머스 모의고사 문제 풀이

프로그래머스 모의고사 문제 풀이
function solution(answers) {
    let patterns = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]];
    let scores = [0, 0, 0];
    let result = [];

    for (let i = 0; i < answers.length; i++) {
        for (let j = 0; j < patterns.length; j++) {
            if (answers[i] === patterns[j][i % patterns[j].length]) {
                scores[j]++;
            }
        }
    }

    let maxScore = Math.max(...scores);
    scores.forEach((score, index) => {
        if (score === maxScore) {
            result.push(index + 1);
        }
    });

    return result;
}

solution([1, 2, 3, 4, 5]);

오늘의 학습을 통해 브루트 포스 알고리즘의 기본 개념과 사용 예시에 대해 배웠습니다. 이러한 기본적인 알고리즘 이해는 더 복잡한 문제 해결의 기초가 된다.
조금씩 조금씩 계속 공부해나가면 나중에 나의 무기이자 자산이 될 것이다.

profile
흠..

0개의 댓글

관련 채용 정보