브루트-포스 법
선형 검색과 이진 검색 두가지 방식은 대게 숫자와 같은 요소들을 검색하는데 편리한 방식이었습니다. 하지만 문자열에 이 방식들을 대입하기엔 쉽지 않습니다. 그래서 문자열들을 검색할 수 있는 몇 가지 방법들을 소개하려고 합니다.
브루트-포스 법
브루트-포스 법(Brute-Force Method)
는 마치 선형 검색처럼 모든 요소에 대해 일일히 비교하는 방식입니다.
한 문자열에서 aba
라는 문자열을 찾으려고 한다면 다음과 같이 나타낼 수 있습니다.
우선 문자열의 인덱스 0과 키의 인덱스 0을 비교합니다. 이때 그 요소가 일치했다면 그 다음 인덱스와 키의 두번째 인덱스를 비교합니다.
비교한 결과가 일치했다면 3번째 인덱스를 다시 검사하겠지만 여기서는 불일치했기 때문에 키를 이동시켜 원 문자열 배열의 1번 인덱스와 키의 0번 인덱스를 비교합니다.
이런식으로 키와 원 문자열을 끝까지 비교했을 때 완전히 동일하다면 검색에 성공한 것입니다.즉, 브루트-포스 법
은 선형 검색처럼 모든 요소를 하나씩 전부 검사하는 방식이라고 할 수 있습니다.
브루트-포스 법 구현
export const bruteForceMethod = (str, key) => {
//문자열을 검사할 인덱스
let strIndex = 0;
//str[strIndex]가 유효할 동안 검사 반복
//undefined === false이므로, 문자열 끝을 넘어서면 반복 종료
while (str[strIndex]) {
//문자열과 비교할 키 문자열 인덱스
let keyIndex = 0;
//현재 인덱스와 첫 키 인덱스가 같으면
if (str[strIndex] === key[keyIndex]) {
//문자열의 현재 인덱스(시작위치) 저장
let currentIndex = strIndex;
//그 이후로 다음 인덱스를 계속해서 비교
while (str[strIndex] === key[keyIndex]) {
//키 인덱스 끝까지 갔을 때 검색에 성공
if (keyIndex === key.length - 1) {
return console.log("검색 성공, 인덱스: " + currentIndex);
}
strIndex++;
keyIndex++;
}
}
strIndex++;
}
return console.log("검색 실패");
};
Author And Source
이 문제에 관하여(브루트-포스 법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@bami/브루트-포스-법
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
export const bruteForceMethod = (str, key) => {
//문자열을 검사할 인덱스
let strIndex = 0;
//str[strIndex]가 유효할 동안 검사 반복
//undefined === false이므로, 문자열 끝을 넘어서면 반복 종료
while (str[strIndex]) {
//문자열과 비교할 키 문자열 인덱스
let keyIndex = 0;
//현재 인덱스와 첫 키 인덱스가 같으면
if (str[strIndex] === key[keyIndex]) {
//문자열의 현재 인덱스(시작위치) 저장
let currentIndex = strIndex;
//그 이후로 다음 인덱스를 계속해서 비교
while (str[strIndex] === key[keyIndex]) {
//키 인덱스 끝까지 갔을 때 검색에 성공
if (keyIndex === key.length - 1) {
return console.log("검색 성공, 인덱스: " + currentIndex);
}
strIndex++;
keyIndex++;
}
}
strIndex++;
}
return console.log("검색 실패");
};
Author And Source
이 문제에 관하여(브루트-포스 법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bami/브루트-포스-법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)