Stack은 값마다 메모리를 배당합니다.(배열 만들어서 참조)
Capacity를 1씩 증가시키면 capacity 1씩 증가시키고 메모리 재배당하는 과정을 push될 때마다 반복해야합니다. 만약 capacity 1짜리 stack에 1000000개를 push하려면 이 과정을 1000000번 반복하게 되겠죠.
Capacity를 2배씩 증가시키면 메모리 낭비는 있겠지만 재배당하는 과정이 줄어듭니다. 만약 capacity 1짜리 stack에 1000000개를 push하려면 재배당을 20번만 하면 됩니다. 물론 이 방법은 어느정도의 메모리 낭비는 있습니다만, 대신 runtime을 효과적으로 줄였습니다.
이처럼 공간복잡도(메모리)를 늘려서 시간복잡도(runtime)를 줄이는 알고리즘 기법이 많은데, 대표적인 예시로는 계수정렬이 있습니다.
알고리즘 수강하게 되면 시간복잡도와 공간복잡도에 대해 자세히 배우게 될테니 지금은 일단 메모리 아끼는 것 보다는 runtime 줄이는 게 더 효율적이라는 것만 알아두시면 좋을 것 같습니다.