설명
나무위키
"
Brute force
조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 암호를 해독하는 방법.
브루트 포스 공격(brute force attack) 또는 키 전수조사(exhaustive key search), 무차별 대입 공격(無差別代入攻擊) 등으로도 부른다. 흔히 수학 문제를 원시적으로 푸는 방법인 '수 대입 노가다'의 학술적 버전이다. 주로 암호학에서 연구되는 방법이나, 다른 알고리즘 분야에서도 사용되고 있다.
"
이미 검사를 진행한 위치를 기억하지 못하므로 부르트-포스법의 효율은 좋지 않다고 할 수 있다!
예제
package 문자열검색;
import java.util.Scanner;
public class P8_1 {
static int bfMatch(String txt , String pat){
int pt = 0; //txt 커서
int pp = 0; //pat 커서
while(pt != txt.length() && pp != pat.length()){
if(txt.charAt(pt) == pat.charAt(pp)){
pt++;
pp++;
}else{
pt = pt - pp +1;
pp = 0;
}
}
if(pp == pat.length()){
return pt-pp;
}
return -1;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("텍스트 : ");
String s1 = scan.next();
System.out.println("패턴 : ");
String s2 = scan.next();
int idx = bfMatch(s1,s2);
if(idx == -1){
System.out.println("텍스트에 패턴이 없습니다.");
}else {
int len = 0;
for (int i =0; i<idx ; i++){
len += s1.substring(i , i+1).getBytes().length;
}
len += s2.length();
System.out.println((idx + 1) + "번째 문자부터 일치합니다.");
System.out.println("텍스트 : " + s1);
System.out.printf(String.format("패턴 : %%%ds\n" , len) , s2);
}
}
}
결과
'알고리즘 && 자료구조' 카테고리의 다른 글
[java] 직접 구현해보는 큐 (0) | 2021.03.21 |
---|---|
Disjoint Set(서로수 집합) (0) | 2020.07.29 |
[스터디] 검색 알고리즘 (0) | 2020.07.14 |
백준 2606 - BFS(Breadth-First-Search) (0) | 2020.06.08 |
퀵 정렬( Quick Sort ) 알고리즘 (0) | 2020.06.04 |