'검색'에 해당되는 글 2건

  1. 2013.07.10 문자열검색 알고리즘. KMP
  2. 2012.02.16 Safari 기본검색엔진 추가하기

검색하면, 문자열비교함수 strcmp() 같은걸 떠올려서 O(m*n) 수준의 알고리즘을 사용하는게 딱 내 수준인데,

세상엔 이런 알고리즘들을 즐비하게 만들어내주신다. 저런 패턴을 찾아낸다는것 자체가 신비롭다.


나같은 범인들은 그냥 잘차려진 밥상에 숟갈 얹어 잘 먹어주기만 하면 되는데,

요즘처럼 호기심 왕성한 시기에는 하나하나 파헤쳐본다. 창조자의 기막힌 발상 자체에 경의를 표하며...


아래소스코드는 개략적인 아이디어를 확인하는 샘플코드. 의사코드로 된 것이 좀 더 정확하지만,

내 눈깔은 다른 언어보다 역시나 C/C++ 스타일에 너무 익숙하다. 때론 일상적인 언어보다 나을때가 있다.

--------------------------------------------------------------------------------

/*

 * KMP algorithm

 * KMP(char *s, char *p)

 * find string p in string s

 * if find p in s, return index of s

 * else return -1

 * set N (max string length)

 */


#include <cstdio>

#include <cstring>


#define N 100


using namespace std;


void make_f(char *p, int *f)

{

    int pl;

    int q, k;

    pl = strlen(p);

    f[0] = -1;

    k = -1;

    for( q=1; q<pl; ++q)

    {

        while( k>=0 && p[k+1] != p[q] ) k = f[k];

        if(p[k+1] == p[q]) k++;

        f[q] = k;

    }

}


int KMP(char *s, char *p) 

{

    int f[ N ];

    int sl, pl;

    int i, q;


    pl = strlen(p);

    sl = strlen(s);

    make_f(p, f);

    q = -1;

    for( i=0; i<sl; ++i)

    {

        while( q >= 0 && p[q+1] != s[i] ) q = f[q];

        if(p[q+1] == s[i]) q++;

        if(q == pl-1) return i-pl+1;

    }

    return -1;

}


Posted by Jason Ryu
,
좋아하지 않아도 익숙해져버리면 다른 것으로 바꾸기가 참 어렵다.
네이버 초기 화면에 나오는 "뉴스" 내용들을 보면 눈에 거슬리는것이 많아 웬만하면 안본다.
그런데, 지난 수년동안 (아무생각없이) 사용해왔던 검색엔진으로서 네이버는 너무 익숙해져버려서 다른 검색엔진의 결과화면으로는 뭔가가 부족한 느낌을 지울수가 없다.  무슨 차이가 있는지 아무리 생각해봐도 스스로에게 납득이 안가지만, 스치듯 떠오르는 것 하나는 '네이버 지식인 결과'와 같이 "다른 사람들의 생각"을 볼 수 있는 그런 부분이 아닐까하는.........

아뭏든 일차검색은 네이버로하고, (늘 부족했기에) 곧이어서 "구글링"을 사용하게 된다.

사파리 설치시 기본값으로는 '구글, 야후, 빙'만 있어서 굳이 애써 별도의 프로그램을 설치해서 세팅해줘야 네이버추가가 된다.
필요한 프로그램은 "GLIMS". http://www.machangout.com/


설치후에 사파리 재구동하니 Glims란 아이콘이 보인다.


 Search Engines List에서, 네이버를 추가한다.
쿼리URL은  http://search.naver.com/search.naver?where=nexearch&query=#query#
이건 어케아느냐? 네이버 메인페이지에서 검색창에 '검색'이라고 입력한후 검색을 실행해보면 된다.

 사용자가 입력한 글자가 주소창에 보인다. 그게 쿼리주소정보. 검색이라는 글자대신 '#query#'이라고 사용하도록 한다.


Posted by Jason Ryu
,