Problem Solving/나를 위한 개발 5

[알고리즘] Boyer-Moore 알고리즘

요즘 보고 있는 책이다. 전반적으로 C++ 코드도 깔끔하고 볼만한 책이다. 텍스트 패턴 매칭부분을 보면서 Boyer-Moore알고리즘을 보는데, 와~ 하고 감탄했다. BM패턴을 보기전에 과연 어떻게 패턴을 찾는 알고리즘을 개선시킬까 잠깐 고민하고 봐서 그런지 더 와닿은거 같다. BM알고리즘의 원리는 간단하다. 1. 비교하는 문자열을 뒤에서 부터 확인 2. 비교하는 문자열에 없는 문자가 오면(last(c) == -1), 문자열 개수만큼 건너뛰기 원리는 간단한데, 효과는 강력한 알고리즘.. 멋진 패턴 중 하나인거 같다. Moore의 홈페이지 http://www.cs.utexas.edu/users/moore/ 관련 ppt 자료

[GCJ] Google Code Jam Qualification Round A 문제풀이

어제 Google code jam(GCJ) Qualification Round가 있었다. 어제는 업무때문에 볼 여력이 없었는데, 오늘 시간이 좀 나서 어제 기출문제(?)를 한번 풀어봤다. 문제는 A, B, C로 나오고 각 문제별로 Smaill Input, Large Input 으로 나와있다. 문제 A는 비교적 금방 이해되어서 C 문법도 공부해볼겸 C로 짜봤다. 처음에 그냥 배열로 하다보니 반복처리하는거도 잘 안되고 해서 Linked List를 간단하게 구현해서 완성했다. ㅋㅋ 나온 output을 검증해보니 smaill 과 large 모두 한번에 Correct 다. 오호; 이맛에 프로그래밍을 하는군..싶다. 문제는 다음과 같고 Smaill파일과 Large 파일이 제공됐다. Problem The urban ..

{first 10-digit prime found in cosecutive digits of e}.com

임백준씨가 쓴 "임백준의 소프트웨어 산책"이란 책을 최근에 읽었다. 그중에 뒷부분에 '프로그래머 K씨의 하루'라는 짧막한 소설이 있었는데, 거기에 흥미로운 내용이 있었다. 구글에서 2004년쯤인가에 사진과 같은 광고판을 어느 고속도로에 붙였다고 한다. {e의 연속된 숫자중에서 10개로 이루어진 첫번째 소수}.com이라는 문구는 유능한 프로그래머를 찾고자 하는 구글의 작은 이벤트였던 것이다. 흥미로워서 실제로 저 수를 구하는 소스를 C로 짜봤다. ㅋㅋ 숫자가 10자리라 int형으로 안되서 double로 처리했음.. #include #include #include #include #define TOTAL_ROW 10000 #define EACH_UNIT 10 #define LOOP_CNT 2000 int i..

[20080702] php에서 c확장기능 구현

회사에서 인증등 보안이 필요한 부분에 대해 php내에서 zend기능을 통해 c확장기능을 구현해 놓고 쓴다. 그런데, 기존에 구현되어 있는 부분이라 소스도 복잡하고, 이 부분이 왜 들어갔을까 하는 부분을 알기 힘들기 때문에, 기존 소스에 구애받지 않고, 직접 간단하게 c확장기능을 구현하는 부분을 테스트 해보았다. 참고로, zend라고 검색을 하면 주로 php성능향상을 위해 zend사에서 내놓은 엔진에 대한 내용이 많은데, http://kr.php.net/manual/en/zend.php#zend.intro 위 사이트에서 보면 php에서 c와 같은 다른 언어의 함수등을 호출해서 쓸 수 있는 기능으로도 불린다.. 우선 다음과 같이 c로 test.c를 만든다. #include "php.h" ZEND_FUNCTI..

생활속의 프로그래밍 시작~

요즘 읽고 있는 책들이나 몇몇 동영상을 통해 생활 속의 프로그래밍, 즉 나를 위한 프로그래밍을 매일 조금씩 해봐야 겠다는 생각을 했다. 남들에게 보여주기 부끄러울지 모르지만, 하나하나 기본기를 연마하고 내 실력이나 생활에 유용한 프로그램을 해봐야 겠다. 프로그램은 1시간에서 2시간안에 끝날 수 있는 간단한 기능 위주로 해볼려고 한다. 게시물은 우선 비공개모드다; 나중에 이 카테고리가 좀 쌓이고, 먼가 그럴듯한 산출물이 나오면 카테고리 전체를 일괄 공개로 하는 목표를 삼아본다.

반응형