blurry   3년 전

line 1~13 vs line 15~

요세푸스 문제를 풀이하는 부분의 코드만을 가져왔습니다.

코드는 다르지만 논리적으로 두 코드는 동일하다고 생각하고 있는데,

연속된 메모리(array / vector) 에서 특정 칸의 원소를 지우고, 지워진 원소 뒤에 따라오는 원소들을 앞으로 다 당기는(line 5 / 13) 연산을 하는 순서로 작동이 되서 논리적으로 같다고 생각했습니다.

하지만 위의 코드는 시간초과에 걸리고 아래의 코드는 통과하더라구요.

그럼 차이를 만드는 건 vector erase()의 속도밖에 없는 것 같습니다.

구글링을 해보니 vector erase가 지워진 원소의 공간을 메우지 않고 그 공간을 다른 요소로 이어준다거나 하는 방식으로 구현되지는 않은 것 같은데, 혹시 vector erase가 어떻게 잘 구현을 했는지 아시는 분이나 그런 정보를 찾을 방법이 있을까요?

일단 제가 추측하는 방법은 메모리를 한 칸씩 말고 여러칸을 한번에, memory chunk 단위로 옮길 수 있는 기능이 있으면 빨라질 것 같긴 합니다.

댓글을 작성하려면 로그인해야 합니다.