더북(TheBook)

3. 다음 함수는 복리의 무서움을 보여주는 오랜 비유를 재현한 것이다.

체스판 한 칸에 쌀 한 톨을 놓는 상상을 해보자. 두 번째 칸에는 이전 칸에 놓았던 쌀 양보다 두 배 더 많은 쌀 두 톨을 놓는다. 세 번째 칸에는 쌀 네 톨을 놓는다. 네 번째 칸에는 쌀 여덟 톨을 놓고 다섯 번째 칸에는 쌀 열여섯 톨을 놓는 식으로 이 과정을 반복한다.

함수는 몇 번째 칸에 일정한 수의 쌀을 놓아야 하는지 계산한다. 가령 쌀이 열여섯 톨이면 다섯 번째 칸에 놓아야 하니 함수는 5를 반환한다.

다음과 같이 구현한 이 함수의 시간 복잡도를 빅 오 표기법으로 나타내자.

function chessboardSpace(numberOfGrains) { 
    let chessboardSpaces = 1;
    let placedGrains = 1;

    while (placedGrains < numberOfGrains) { 
        placedGrains *= 2;
        chessboardSpaces += 1;
    }

    return chessboardSpaces; 
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.