본문 바로가기
728x90

전체 글104

시간 복잡도(2) 안녕하세요! 지난 시간에 시간 복잡도에 대해 공부했는데요, 예를 좀 더 살펴보겠습니다! 여러 시간 복잡도 중 많이 쓰는 것들만 정리하려합니다. O(1) : 인풋의 크기가 소요시간에 영향이 없는 것입니다. (반복문이 없으면 대게 O(1) 일 가능성이 큽니다!) (ex. a = [1, 2, 3] / b = [1, 2, 3, 4, .... 10000] 이라고 할 때, print(a[0]) 과 print(b[0]) 의 시간 복잡도는 동일하게 O(1)) O(n) : 반복문이 있으며 인풋의 크기와 비례하여 반복 횟수가 증가하는 Case! ex. 위와 같이 n개의 리스트의 요소를 처음부터 끝까지 출력하는 경우가 있습니다. 여기서 리스트의 크기를 줄여도 시간 복잡도는 O(n)인 점 주의해주세요! [앞의 상수는 제외한다.. 2021. 5. 1.
시간 복잡도 + 한풀이) 안녕하세요! 어느덧 블로그를 시작한 지 1주일이 지났습니다! 회사생활은 여전히 밋밋하고... 일할때도 머릿속은 코딩 생각밖에 안 나네요 ㅠㅠ 집 가서 무슨 공부를 해야 할까... 알고리즘, 웹, Git, 기타 컴퓨터 지식까지.... 할 일이 너무 많은 것 같아요... 하지만 이렇게 힘들어도 꾸준히 하다 보면 폭발적으로 실력이 늘어날 것이라 생각하고 계속해보겠습니다!! 오늘은 내가 짠 알고리즘이 좋은 알고리즘인지 판단할 수 있는 근거 중에 하나인 시간 복잡도를 공부했습니다. 주의! 비전공자로서 처음 개발 공부를 하는 것이라 내용이 틀리거나 부실한 것이 있을 수 있습니다! 댓글로 알려주시면 정정하도록 하겠습니다^^ 먼저 시간 복잡도에 대해 알아보겠습니다. 같은 100개짜리 요소를 가진 리스트를 .. 2021. 4. 30.
선택 정렬 / 삽입 정렬 안녕하세요! 오늘은 정렬하는 법에 대해 공부하였습니다. 사실 정렬 알고리즘은 여러 방법들이 있는데요 (ex. 힙 정렬, 합병 정렬, 선택 정렬 등등) 여기로 들어가시면 각 정렬 알고리즘을 애니메이션으로 직관적으로 확인하실 수 있습니다! 선택 정렬과 삽입 정렬만 우선 정리해보겠습니다! 선택 정렬(Selection Sort) : 선택 정렬은 각 위치에 들어갈 값을 찾는 정렬 방법입니다. 처음부터 끝까지 리스트 안 요소들을 확인하고 가장 작은 것을 0번 인덱스로 설정! 그다음 1번~ 끝까지 리스트 안 요소들을 확인하여 가장 작은 것을 1번 인덱스로 설정! 이렇게 반복하며 정렬하는 것입니다. 글로 쓰니 더 헷갈릴 것 같아 아래 그림으로 정리를 해보았습니다. 삽입 정렬(Insertion Sort) : 삽입 정렬은.. 2021. 4. 28.
선형 탐색 / 이진 탐색 언젠가 칠지도 모르는 코딩테스트 준비 및 개발자라면 알고리즘은 필수로 알아야하기에 배운 것들을 정리하려합니다. 틀린 내용 및 부족한 내용이 있을 수 있다면 댓글 달아주시면 수정 및 추가하도록 하겠습니다! 우선 오늘은 탐색방식 중에 2가지(선형 탐색/이진 탐색)를 확인해 보겠습니다 선형 탐색(Linear Search) : 리스트의 처음부터 끝까지 하나씩 탐색을 진행하는 것입니다. 아래 예시를 먼저 보시죠! 리스트 내에서 8을 찾을때 위와같이 4회만에 8을 찾은 것이 확인이 됩니다. 이진 탐색(Binary Search) : 이진 탐색 알고리즘은 선형 탐색 알고리즘과 달리, 정렬된 리스트를 전제로 합니다. 정렬된 리스트가 아니면 이 알고리즘은 적용이 불가능합니다. 여기서 이진의 의미는 한번 적용할때마다 탐색범.. 2021. 4. 26.