public void Move(int begin_index, int end_index)
    {
        Block begin_block = mBlockMap[begin_index];
        Block end_block   = mBlockMap[end_index];

        // 블록 이동
        begin_block.Move(end_index);
        end_block.Move(begin_index);

        // 블록 위치 저장소 정보 갱신
        mBlockMap[begin_index] = end_block;
        mBlockMap[end_index]   = begin_block;

        mStepManager.ChangeState(Utils.EFlowState.EChecking);
    }