본문 바로가기
Algorithms, data structure/개념

Big O Time quiz

by CodeMia 2022. 4. 10.

다음 함수의 Big O는? 

 

< 문제 1 > 

function logAtLeast5(n){
  for (var i = 1; i <= Math.max(5, n); i++){
        console.log(i)
    }  
}
logAtLeast5(7);

 

 

n 이 7을 넣었을 때  

 

i = 1 

1 이 7보다 작은가 

1 출력

 

1 = 2

2 가 7보다 작은가 

2 출력 

 

...

1~7까지 일일이 물어보고 출력

... 

 

n을 1,000,000 으로 입력했다면 

1부터 모두 확인 후 1,000,000까지 출력

 

Big O 는 O(n) 이다.

 

 

 

 

< 문제 2 > 

function logAtLeast5(n){
  for (var i = 1; i <= Math.min(5, n); i++){
        console.log(i)
    }  
}
logAtLeast5(7);

 

n이 높은 숫자라 하더라도 

둘 중 작은 숫자까지 이기 때문에 

이 loop은 최대 5번까지 밖에 돌지 않는다. 

 

이런 경우 Big O는 O(1)이다.

 

 

 

 

< 문제 3 > (이해 안감) 

function onlyElementsAtEvenIndex(array){
    var newArray = Array(Math.ceil(array.length / 2));
    for (var i = 0; i < array.length; i++){
        if (i % 2 === 0){
            newArray[i / 2] = array[i];
        }
    }
    return newArray;
}

 

답은 O(n)

 

 

 

< 문제 4 > 

 

function subtotals(array) {
    var subtotalArray = Array(array.length);
    for (var i = 0; i < array.length; i++) {
        var subtotal = 0;
        for (var j = 0; j <= i; j++) {
            subtotal += array[j];
        }
        subtotalArray[i] = subtotal;
    }
    return subtotalArray;
}

 

답은 O(n^2)

 

 

 

 

'Algorithms, data structure > 개념' 카테고리의 다른 글

Simplifying Big O Expressions  (0) 2022.04.10
Big O Notation  (0) 2022.04.10
[Big O] Timing our code  (0) 2022.04.09
Intro to Big O Notation  (0) 2022.04.09
브라우저 콘솔 스닙핏 여는 법 | opt+cmd+J (맥)  (0) 2022.04.09

댓글