brunch

You can make anything
by writing

C.S.Lewis

by 이종복 Jul 24. 2019

알고리즘(1)

- 자신이 깨달은 내용을 정리하는 것이 가장 바람직하다.

- 깨달음이 가장 중요함


- 알고리즘은 현실의 문제를 해결하기 위해 존재하는 것이다.

- 1초가 걸리는 입력의 크기가 Big O notation 마다 다르다.

- 이 말의 의미는, 같은 1초가 걸리더라도 특정 Big O Notation은 

   더 작은 데이터양을 처리할 수 있고,

   어떤 것은 더 큰 데이터양을 처리할 수 있다는 것이다. 

- 같은 시간에 더 작은 데이터양을 처리할 수 있는지, 더 많은 데이터양을 처리할 수 있는지의 차이다.

- 즉, 같은 시간에 더 많은 데이터양을 처리할 수 있는 것이 더 효율적이라고 할 수 있다.

- 결국, 더 효율적인 알고리즘이 무엇이냐의 문제이다. 


- 시간 복잡도란, 결국은 이 알고리즘이 얼마나 효율적인 알고리즘인지를 나타내는 것이다. 

- O(1)이 O(N)보다 효율적인 알고리즘이다.

- 왜냐하면 같은 시간 안에 더 많은 데이터를 처리할 수 있기 때문이다. 

- O(N)이 O(N*N)보다 효율적인 알고리즘이다. 

- 왜 그러할까? 

- O(N)이란 문제를 해결하기 위한 단계가 N이라는 의미이다.

- O(N*N)이란 문제를 해결하기 위한 단계가 N의 제곱이라는 의미이다. 

- 이것이 무슨 의미인가?

- 하나의 문제를 해결하는데 단계가 N이면, 그만큼의 시간이 걸린다.

- 하나의 문제를 해결하는데 단계가 N의 제곱이면, 그만큼의 시간이 걸린다.

- 즉, 하나의 문제를 해결하는데 단계가 늘어날수록, 그 문제를 해결하는데 시간은 더 길어진다.

- 즉, 시간복잡도가 더 크다는 것은, 어떤 문제를 해결하는데 걸리는 시간이 길다는 것.

- 즉, 더 비효율적이라는 의미이다. 

- 즉, 시간복잡도가 작을 수록 더 좋은 알고리즘이다. 

- 왜냐면 더 효율적이기 때문이다. 

- 시간복잡도가 작으면 더 효율적이고, 같은 시간안에 더 많은 데이터를 처리할 수 있다. 

- 시간복잡도란 결국 얼마나 효율적인 알고리즘인지를 나타내는 것이다.  

- 이것이 중요한 이유는 더 효율적인 코드를 설계하기 위함이다. 


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari