Big O

DG
2 min readJun 2, 2020

--

어떻게 어떤 알고리즘이 더 좋은 알고리즘인지 판별할 수 있을까?

만약에 나와 내 친구가 0부터 N까지의 합을 구하는 함수를 작성했다고 가정해보자. 과연 나와 내 친구가 짠 함수를 어떻게 비교할 수 있을까?

내가 짠 코드

친구가 짠 코드

그리고 이 둘의 실행시간을 비교해보자 n으로는 둘다 10000을 대입하였다.

친구가 짠 코드의 실행시간이 더 짧다는 걸 알 수 있다.

하지만 코드의 효율성을 측정하기 위해서 코드의 실행시간을 가지고 비교해보는 것은 그렇게 큰 의미가 없다. 컴퓨터의 하드웨어 성능에 따라서 결과값이 달라지기 때문이다. 그래서 우리는 객관적인 지표가 필요한데, 그때 사용되는 방법이 바로 Big O 이다.

Big O

Big O 는 함수의 인풋이 커져감에 따라서 코드의 실행시간이 얼마나 상대적으로 증가하는지를 나타낸다.

내가 짠 코드는 인풋의 값 n 이 증가하면 증가할수록 연산과정이 n+1 번임을 알 수 있다. 하지만 친구가 짠 코드는 n의 값이 아무리 증가하여도 연산과정이 변하지 않음을 알 수 있다.

내가 짠 코드는 O(n), 친구가 짠 코드는 O(0) 이다.

이로써 객관적으로 친구가 짠 코드가 더 효율적인 코드인게 증명이 된 셈이다.

--

--

DG
DG

Written by DG

한국의 iOS 개발자이다. 강아지와 운동을 좋아함. github: https://github.com/donggyushin

No responses yet