algorithm
2023-05-13 04:21
“문자열을 받아서 이것을 뒤집어서 출력하는 function을 쓰시오.” 라고 했을 때, 이것을 해결하기 위한 해결책, 접근 방식이 1가지만 있는 것은 아니다. 정말 무수히 많은 접근 방법이 있다.
단순히, 매개변수 이름이 조금 다른 정도가 아니라, for loop를 while loop로 바꾸는 정도가 아니라 문제를 접근하는 방식이 다르다.
이 때 코드를 분류하거나 비교할 수 있는 시스템이 있으면 얼마나 좋을까?
빅오 표기법이 그런 목적을 갖고 있다.
지진을 작은 지진, 큰 지진, 더 큰 지진으로 분류하는 것이 아니라 7.9 강도 지진, 9,2 강도 지진으로 분류하는 것이 빅오 표기법의 목적과 같다고 말할 수 있다.
때로는 제대로 작동하는 해결법이 가장 좋은 해결법일 수 있지만, 코드 챌린지를 할 때 빅오 표기법의 코드 성능 분석이 필요하고 수천개의 데이터가 있는 큰 데이터셋을 다루는 대기업에서 한 알고리즘이 다른 알고리즘보다 실행하는데 한 시간이 더 빠른 경우가 있을 수 있다. 이럴 때도 빅오 표기법은 중요하다.
그런 경우에는 실제로 가장 좋은 알고리즘이 있다.
그렇게 때문에 코드의 성능을 얘기할 때 정확한 전문용어를 사용하는 것이 중요하다.
빅오를 이해하면 어디서 문제가 나타나는지 찾기 쉬울 수 있고 비효율적인 코드를 찾는데 도움이 된다.