본문 바로가기

시간 복잡도(Time Complexity) 공부하기 알고리즘을 공부하면서 '시간 복잡도(Time Complexity)'라는 개념이 얼마나 중요한지 자주 마주하게 된다. 시간 복잡도는 알고리즘이 주어진 입력을 처리하는 데 걸리는 시간을 나타내는 개념으로, 이를 이해하면 알고리즘의 효율성을 평가하는 데 큰 도움이 된다. 이번에는 시간 복잡도가 무엇인지, 그리고 왜 중요한지에 대해 깊이 있게 공부해보자.시간 복잡도란?시간 복잡도는 알고리즘이 어떤 입력을 받았을 때, 그 입력을 처리하는 데 걸리는 시간을 나타낸다.주로 입력 크기(input size)에 대한 함수로 표현되며, 입력이 커질수록 알고리즘이 얼마나 더 오래 걸리는지를 설명해준다.시간 복잡도 표기법 - Big-O 표기법시간 복잡도는 보통 Big-O 표기법을 사용해 표현한다. 이 표기법은 입력 크기에 따라..
알고리즘 공간복잡도 공부하기 공간 복잡도란?이번 포스트에서는 공간 복잡도에 대해 알아보겠습니다. 공간 복잡도는 알고리즘을 평가할 때 중요한 개념 중 하나입니다. 특히, 알고리즘이 얼마나 많은 메모리 공간을 필요로 하는지 이해하는 데 유용합니다.공간 복잡도의 정의공간 복잡도는 알고리즘을 실행하는 데 필요한 메모리 공간의 양을 의미합니다. 이는 알고리즘이 입력 데이터를 처리하고, 중간 결과를 저장하며, 최종 출력을 생성하기 위해 사용하는 메모리의 양을 나타냅니다. 메모리 사용량이 적을수록 효율적인 알고리즘으로 평가됩니다.공간 복잡도를 이해하기 위한 비유상황극: 우리가 정원에서 보물찾기를 하고 있다고 가정해 봅시다.보물은 정원에 숨겨져 있으며, 우리는 단서를 따라 보물을 찾아야 합니다.우리는 여러 가지 크기의 상자를 사용할 수 있습니다...
알고리즘 기초 : 분할정복, 병합정렬, 이진 탐색, 퀵 정렬 쉽게 이해하기 🦖 분할정복(Divide and Conquer)오늘은 분할정복이라는 알고리즘에 대해 공부한 내용을 정리해보려 합니다. 분할정복은 문제를 작은 문제로 나누어 해결하는 방식인데, 어떻게 작동하는지, 그리고 이 방식이 어떤 장단점을 갖는지 공부해보겠습니다.개념 정리분할정복이란, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법입니다. 각 부분 문제의 답을 재귀 호출로 계산하고, 이 답을 모아 전체 문제의 답을 계산합니다. 쉽게 말해, 큰 문제를 작게 쪼개고, 이 작은 문제들을 해결해서 전체 문제를 해결하는 것이죠.Divide and Conquer의 단계분할(Divide): 문제를 더 이상 분할할 수 없을 때까지 동일한 유형의 여러 하위 문제로 나눕니다.정복(Conquer): 가장 작은..