c++ 알고리즘 공부중인 뉴비임다


문자열 탐색 알고리즘 해야하나.. 싶었지만 혹시 몰라 시도하는 중임다


어제 오늘 총 7시간동안 문자열가지고 별 생쇼를 다했습니다.


교재는 C인데다가 utf-8은 고려도 안해서 답은 막힐 때 참고하는 수준으로만 보면서 만들어 봤습니다.




알고리즘은 총 2개, Brute Force algorithm과 Boyer Moore algorithm을 썻습니다.


테스트는 윤동주의 별헤는 밤에서 별을 검색


영어로만 된 Lorem ipsum에서 ipsum 검색


이렇게 2번씩 총 4회 했습니다.


브루트 포스법은 둘다 잘 찾습니다. 근데 보이어 무어는 영문은 잘 찾는데 별헤는 밤에서 별을 딱 1개 찾습니다.(정답은 13개)




영문은 잘되는 거보니 뭔가 UTF-8에 대한 이해가 잘못 된 것 같습니다.


분명 UTF-8이 1~3바이트로 크기가 들쑥날쑥 개판인 것은 맞지만,


어치파 char string에 박아넣으면 1바이트 단위로 잘라져서 들어갈테고


그러면 1바이트 씩 비교하나 정해진 크기대로 비교하나 결국엔 같은 결과가 나올거라 생각했습니다.




이제 더이상 뭐가 문젠지도 모르겠고 멀리서 몬티 파이썬이 비웃는 듯한 환청이 들려옵니다.


절박하기에 이렇게 영민하신 프갤 선배님들께 고개박고 부탁드립니다.


볼 것도 없는 졸자의 깃허브 레포지토리는 아래와 같습니다


https://github.com/Markgraf-Oh/Data-Structure-and-Algorithm-in-Cpp



TestString.h은 테스트용 문자열인 별헤는 밤과 Lorem ipsum이 들어 있는 헤더입니다.


StringSearch.h 와 StringSearch.hpp는 탐색 알고리즘이 있는 헤더입니다.


StringSearchTest.cpp 가 main을 돌리는 파일입니다.


나머지는 안열어보는게 눈에 좋은 저의 개똥같은 코드들입니다.



어차피 하나는 성공했으니 UTF-8 잣같네 하며 넘어가도 되겠지만 뒤통수가 간지러워서 못참을 것 같습니다...