탐색 (3) 썸네일형 리스트형 [탐색 알고리즘] 보이어-무어(Boyer-Moore) 방법으로 문자열 탐색하기 Boyer-Moore 탐색 알고리즘 보이어무어 탐색법은 브루트포스 탐색 및 KMP 탐색보다 효율이 좋은 알고리즘이다. int search(String text, String pattern){ int txtIndex; int pattIndex; int txtLen = text.length(); int patLen = pattern.length(); int[] skip = new int[Character.MAX_VALUE + 1]; for(txtIndex = 0; txtIndex patLen - pp) ? skip[txt.charAt(pt)] : patLen - pp; txtIndex += Math.max(skip[text.charAt(txtIndex)], patLen - pattIndex); } retur.. [탐색 알고리즘] KMP법으로 문자열 탐색하기 KMP법 KMP법은 브루트포스법을 개선한 탐색 알고리즘이다. 브루트포스법은 검색하는 도중 문자열이 불일치하면 탐색을 시작한 바로 다음 위치로 이동해 다시 탐색하는 방법이다. 처음부터 끝까지 전부 탐색하기 때문에 그만큼 효율적이지는 못한 방법이다. KMP법을 사용하면 검색이 실패하는 경우, 비교했던 결과를 활용해 다시 검색을 시작할 효율적인 위치를 조정할 수 있다. 참고로 KMP법은 Kruth, Morris, Pratt 3명이 비슷한 시기에 고안했기 때문에 이름의 앞글자를 따서 붙여진 이름이다. int search(String text, String pattern){ int txtIndex = 1; int pattIndex = 0; int[] skip = new int[pattern.length() + 1.. [탐색 알고리즘] 브루트포스법(brute force)으로 문자열 탐색하기 브루트포스 알고리즘 브루트포스법은 문자열을 검색하는 방법 중 기본적인 알고리즘이다. 영어를 직역하면 [brute] - 잔혹한, 악랄한, [force] - 힘, 폭력 이니까 "강제적인 힘"으로 탐색하는 알고리즘 혹은 무차별적으로 대입해 찾아내는 알고리즘이라고 보면 되겠다. 이 알고리즘은 처음부터 끝까지 전부 대입해보는 방법이 주요 특징이다. 비밀번호 숫자 4자리를 해킹하는 상황이라면, 0000부터 9999까지 전부 넣어보고 열리는 것을 찾는 방식이다. Java code int search(String text, String pattern){ //검색할 커서 int textIndex = 0; int patternIndex = 0; while(textIndex != text.length() && pattern.. 이전 1 다음