알고리즘 자체는 C++ 구현과 동일함