[Algorithm] Rabin-karp 알고리즘
이전 문자열 매칭 포스트인 KMP 알고리즘 O(M + N)과 동일하게 특정 문자열을 찾고자 할 때 사용되는 알고리즘인 라빈카프 알고리즘을 이번 포스트에서 설명해보겠습니다. 라빈카프 알고리즘에서 해싱(Hashing) 사용 방법 라빈카프 알고리즘은 해싱으로 문자열을 탐색하는 알고리즘입니다. 문자열 M에서 문자열 N을 찾는 상황에서 라빈카프 알고리즘...
이전 문자열 매칭 포스트인 KMP 알고리즘 O(M + N)과 동일하게 특정 문자열을 찾고자 할 때 사용되는 알고리즘인 라빈카프 알고리즘을 이번 포스트에서 설명해보겠습니다. 라빈카프 알고리즘에서 해싱(Hashing) 사용 방법 라빈카프 알고리즘은 해싱으로 문자열을 탐색하는 알고리즘입니다. 문자열 M에서 문자열 N을 찾는 상황에서 라빈카프 알고리즘...
이전 문자열 매칭 포스트인 KMP 알고리즘 O(M + N)과 동일하게 특정 문자열을 찾고자 할 때 사용되는 알고리즘인 라빈카프 알고리즘을 이번 포스트에서 설명해보겠습니다. 라빈카프 알고리즘에서 해싱(Hashing) 사용 방법 라빈카프 알고리즘은 해싱으로 문자열을 탐색하는 알고리즘입니다. 문자열 M에서 문자열 N을 찾는 상황에서 라빈카프 알고리즘...
길이가 100’000 인 문자열에서 길이가 10 인 특정 문자열을 찾으려면 어떻게 해야 할까요? 이번 포스트에서는 문자열 탐색을 위한 알고리즘은 무엇이 있는지 알아보겠습니다. 하나씩 전부 비교하기 O(M x N) 구현이 가장 간단한 방법은 찾는 문자열을 100’000 자에서 한 글자씩 이동하면서 전부 비교하는 방법 입니다. 100’000 자를...
길이가 100’000 인 문자열에서 길이가 10 인 특정 문자열을 찾으려면 어떻게 해야 할까요? 이번 포스트에서는 문자열 탐색을 위한 알고리즘은 무엇이 있는지 알아보겠습니다. 하나씩 전부 비교하기 O(M x N) 구현이 가장 간단한 방법은 찾는 문자열을 100’000 자에서 한 글자씩 이동하면서 전부 비교하는 방법 입니다. 100’000 자를...
RDBMS의 한 종류인 MySQL 에서 2개 이상의 테이블을 JOIN 하려고 할 때, 몇 가지 규칙이 존재합니다. 이번 포스트에서는 MySQL 에서 사용하는 INNER JOIN 절에 대해 알아보겠습니다. INNER JOIN 절에서 INNER 을 생략하여 JOIN 만 사용할 수 있습니다. 테이블들의 교집합 JOIN 절은 2개 이상의 테이블...
Protoc 는 Protobuf 파일을 입력과 함께 전달받은 명령어로 특정 언어로 컴파일된 파일을 출력합니다. 이번 포스트에서는 Protoc 를 설치하는 방법에 대해서 알아보겠습니다. Protoc 를 설치하는 방법은 vcpkg, github 등 여러가지 방법이 있습니다. vcpkg 를 사용해서 protoc 설치하기 vcpkg searc...
async 한정자 이번 포스트에서는 비동기와 병렬에서 설명한 비동기를 C#에서 직접 사용해 보겠습니다. C# 에서는 비동기 프로그래밍을 위해 async 한정자와 await 키워드가 존재합니다. C# 컴파일러가 async 한정자를 만나면 반환을 기다리지 않고 다음 다음 코드를 실행할 수 있도록 컴파일합니다. async 한정자를 사용하는 메서드는 ...
async 한정자 이번 포스트에서는 비동기와 병렬에서 설명한 비동기를 C#에서 직접 사용해 보겠습니다. C# 에서는 비동기 프로그래밍을 위해 async 한정자와 await 키워드가 존재합니다. C# 컴파일러가 async 한정자를 만나면 반환을 기다리지 않고 다음 다음 코드를 실행할 수 있도록 컴파일합니다. async 한정자를 사용하는 메서드는 ...
async 소개 C++에서 스레드를 사용한 작업은 직접 스레드를 생성하고 종료시켰습니다. 하지만 std::async 에 어떤 함수를 전달한다면, 이전 스레드 관리 방법과 다르게 알아서 스레드를 만들어 Thread Pool 로 객체를 관리하고 해당 함수를 비동기적으로 실행한 뒤 결과값을 future 에 전달합니다. async 사용법 void ...
문제의 코드 개인 프로젝트를 간단히 소개하면 통신하는 프로그램은 유저의 최초 접속부터 매치 메이킹까지 진행하는 C# 메인 서버와 게임 스테이지를 전문적으로 관리하는 C++ 스테이지 서버로 이루어져 있고 클라이언트는 PC에서 UE5, 모바일에서 Unity 로 되어있습니다. GitHub Repo 다양한 기술에 도전해보고 싶어 프로젝트에 많은...