-
[JS 알고리즘&자료구조] 연산 갯수 새기JavaScript/Basic 2023. 10. 25. 00:10
앞에서 봤듯이 코드를 비교할 때 시간을 기준으로 하는 것은 문제가 된다는 걸 알게 되었다. 그렇다면 시간 말고 컴퓨터가 결과를 출력해내기 위해 실행해야만 하는 연산의 갯수를 세는 것은 어떨까? 아래 코드를 보자.
const addUpTo = (n) => { return n * (n+1) / 2; // 곱하기 1회, 더하기 1회, 나누기 1회 }
위의 코드에서는 총 3회의 연산이 진행된다는 것을 알 수 있다. 아래의 다른 코드를 보자.
const addUpTo = (n) => { let total = 0; for (let i = 1; i <= n; i++) { // ++도 연산 total += i; // n만큼 연산이 이루어짐 (1이면 1회, 2면 2회, 10이면 10회, 10억이면 10억회) // <=(비교), =(배정) 등도 연산 } return total; }
위의 코드는 n에 들어오는 숫자만큼 연산이 이뤄진다는 것을 알 수 있다. 더하는 것 외에 배정과 비교 또한 연산이다. 이 하나의 코드에만 몇 개의 연산이 있는건지 세는 것조차 복잡하다. 그만큼 여러 방식의 연산들이 존재하기 때문이다.
연산의 횟수는 2n이 될 수도 있고 5n+2도 될 수 있고 뭐 다양하게 나올 수 있지만 사실 정확한 숫자를 세는 것은 그리 중요한 일이 아니다. 결국 우리는 큰 그림을 봐야만 하고 큰 그림을 보기 위해 Big O 표기법을 사용한다는 것은 변함이 없으니까 말이다.
'JavaScript > Basic' 카테고리의 다른 글
[JS 알고리즘&자료구조] Big O 표현식의 단순화 (2) 2023.10.26 [JS 알고리즘&자료구조] Big O에 대한 공식 소개 (1) 2023.10.26 [JS 알고리즘&자료구조] 시간 복잡도 시각화하기 (0) 2023.10.25 [JS 알고리즘&자료구조] 코드 시간 재기 (1) 2023.10.24 [JS 알고리즘&자료구조] Big O 표기법 소개 (1) 2023.10.23