o(logn) 썸네일형 리스트형 [알고리즘] 왜 시간복잡도에 로그가 들어가지? O(nlogn)?.. 많은분들이 시간복잡도 하면 보통 O(logn) 으로 표현되니 그런가보다..(와이와이???) 하고 넘기실텐데 로그가 왜 들어가는지 의아하신 분들을 위한 글 입니다. 앞선 글에서 분할 정복 알고리즘을 설명한 바 있습니다. 예를 들어봅시다. (배열을 반으로 나누는 과정은 매 단계마다 배열을 절반으로 나눕니다 따라서 주어진 배열의 크가 n 일때) Step 1 : n을 2로 나눕니다 (n/2) Step 2 : n/2를 다시 2로 나눕니다 (n/2) Step 3 : n/4를 다시 2로 나눕니다 (n/8) 이러한 과정을 k 번 반복하여 배열의 크기가 1이 될때까지 반으로 나눈다. 이 과정에서 배열의 크기가 1이 될때까지 몇번의 나누기가 필요한가요? 위 과정에서 배열의 크기가 1이 되기 위해서는 앞선 Step 에서 분.. 더보기 [알고리즘] 시간복잡도 분할과 정복 분할 정복 알고리즘 분할 정복 알고리즘은 문제를 작은 하위 문제로 분할하고, 각 하위 문제를 재귀적으로 해결한 후, 그 해결책들을 합쳐서 원래 문제의 해결책을 구하는 알고리즘이다. 분할 정복의 전형적인 예시로 합병 정렬을 들 수 있는데, 합병 정렬은 배열을 반으로 나누고, 각 반을 정렬한 후에 두 개의 정렬된 반을 합쳐서 전체 배열을 정렬하는 과정을 거친다. 분할 정복 알고리즘은 문제를 작은 단위로 쪼개서 해결하기 때문에 대규모 문제를 효과적으로 해결할 수 있는 장점이 있지만 이 알고리즘을 사용할 때에는 문제를 적절하게 분할하고, 재귀적인 해결과 합병 과정을 적절히 구현해야 한다. 그렇다면 재귀적인 해결 방법이 뭘까? 재귀적 해결방법에 대한 언급이 많이 나와있으나 나에게 확실히 와닿지 않았다. 그말은 그.. 더보기 이전 1 다음