- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 이분 탐색(binary search)2022-11-07 03:44:46이분 탐색(binary search)란? 이분탐색(binary search)은 정렬되어 있는 배열에서 특정 데이터를 찾기 위해 모든 데이터를 순차적으로 확인하는 대신 탐색 범위를 절반으로 줄여가며 찾는 탐색 방법이다. 이분탐색을 사용하는 이유와 시간 복잡도 내가 원하는 값을 빠르게 찾을 수 있기때문에! 정렬된 데이터에서만 사용 가능한 제약사항이 존재하지만 선형 검색과는 달리, 이진 검색에서는 주목할 원소를 다음에 검색할 범위의 중간 지점으로 단숨에 이동하게 된다. 일반적으로 n개의 원소가 오름차순으로 정렬된 배열에서 이진 검색에서 한 단계씩 진행할 때마다 검색 범위는 거의 반으로 좁혀진다. 따라서 시간 복잡도는 O(logN) 으로 굉장히 빠르다. 아래 그림에서 차이를 확인해보자. 선형탐색 vs 이분탐색 ..
- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 힙(Heap) 자료구조, 힙 정렬(Heap Sort)2022-11-06 22:08:10힙(Haep) 이란? 힙(Heap)이란 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 힙은 '부모의 값이 자식의 값보다 ' 부모 - 자식 간 두 값의 대소 관계가 일정해야 한다. 또한 이 조건을 만족하는 완전 이진 트리이다. 참고: 힙에서 부모와 자식 관계는 일정하지만 형제 사이의 대소 관계는 일정하지 않다. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 힙을 사용하는 이유와 시간 복잡도 배열에 데이터를 넣고, 최댓값과 최솟값을 찾으려면 O(n)의 시간복잡도를 가지게 된다. 1. 이에 반해, 배열에 데이터를 넣고, 힙을 만드는 과정의 시간 복잡도는 O(log n) 2. 따라서 힙 정렬은 원소의 개수만큼 작업을 ..
- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 큐(Queue) 자료구조 정리(원형 큐 | 링 버퍼)2022-11-05 22:09:08큐(Queue)는 스택과 같이 데이터를 임시 저장하는 자료구조이다. 하지만 스택과는 다르게 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO) 구조이다. 용도 어떠한 작업/데이터를 순서대로 실행/사용하기 위해 대기시킬 때 사용한다. 서로 다른 쓰레드 사이 또는 프로세스 사이에서나 네트워크를 통해 자료를 주고받을 때 자료를 일시적으로 저장하는 용도로 많이 사용한다. 스택 용어 정리 인큐(enqueue): 큐에 데이터를 추가하는 작업 디큐(dequeue): 데이터를 꺼내는 작업 프론트(front): 데이터를 꺼내는 쪽(가장 앞에 있는 원소) 리어(rear): 데이터를 넣는 쪽(가장 뒤에 있는 원소) 스택과 마찬가지로 큐 또한 배열을 사용하여 구현이 가능하다. 참고로 인큐는 밀어 넣기라고도 표현한다..
- [ 크래프톤정글/자료구조 & 알고리즘 ][자료구조&알고리즘 | WEEK02] 스택(stack) 자료구조 정리2022-11-05 21:45:32데이터를 임시 저장하는 기본 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식이다. LIFO(last in first out)란 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 자료 구조이다. 용도 스택은 비교적 구현이 쉬운 편임에도 활용도가 크다. 예를 들어서 브라우저에서 우리가 이전에 들어갔던 페이지로 돌아가기 위해서 '뒤로가기' 버튼을 눌렀을 때도 스택이 사용되고, Ctrl + Z (Undo) 작업도 스택을 이용한 작업이다. 또한 함수가 함수 자신을 호출하는 것(재귀 함수)도 스택에 기반을 두고 있다.(기회가 되었을 때 메모리의 구조를 공부하여 포스팅 해봐야겠다!) 또한 우리가 코드를 돌렸을 때 수많은 에러 내용을 Traceback으로 확인할 수 있을텐데, 이것도 스택에 기반해서 에러 ..
- [ 크래프톤정글/주간 회고 ]크래프톤 정글1기 - 나를 되돌아보는 시간(특별한과제)2022-10-29 23:59:48결론 1) 목표를 명확히 하고, 자기객관화를 잘하자. 자기객관화가 안 된 욕심은 오히려 화를 부른다. 2) 나에게 주어지는 오늘 하루에 집중하자. 지금 내가 가지고 있는 유일한 무기는 젊음이다. 근데 이게 진짜 세다. 3) 남들을 쫓아가는 것이 아닌, 나 스스로가 어떤 사람인지 잘 파악하고 나만의 방식으로 최적화 시키기 4) 반짝 타오르는 열정보단, 꾸준히 오래가기 5) 글을 읽다 보면 내가 강조하는 것이 '자신감'인데, 나는 일단 성공하고 싶다. 근데 그중 꼭 필요한 요소 중 하나는 자신감이라고 생각한다. 그래서 나는 이걸 꼭 챙기고 싶다.(생각해보면 래퍼들도 다 자신감 소리 많이 한다. 그래서 멋져 보이고 암튼 ㅎㅎ) 2022/10/28 - 금요일, 갑자기 생각나서 메모장에 작성한 내용 인생을 살아가..