본문 바로가기

Algorithm/알고리즘3

Stack 2개로 Queue 구현하기 Stack 2개를 사용해서 Queue와 똑같이 동작하게 만드는 방식입니다. 링크: www.notion.so/STACK-2-QUEUE-daa9b129d1484f369bd9f29395727cd1 출처: https://limkydev.tistory.com/185 2020. 9. 2.
[그래프 탐색] DFS와 BFS의 차이점 기본적으로 DFS와 BFS의 개념을 알고, 코딩이 가능하다는 전제하에 작성한 내용입니다. 면접 때 "DFS와 BFS의 차이점에 대해 말씀해주세요"라는 질문을 받은 적이 있습니다. 어떻게 동작하는지 알고, 코딩도 가능한데 막상 어떻게 말할 지 준비하지 않으면 대답하기 어려운 질문입니다. 그러니 얕게, 깊게 탐색한다는 말은 제외하고 어떻게 말하면 좋을 지 생각해보았습니다. 링크: www.notion.so/DFS-BFS-7fda36b13f594ac89d5687eea96c8daa 잘못된 내용이 있거나 더 나은 표현이 있다면 피드백 주시면 감사하겠습니다. :) 2020. 7. 31.
힙을 사용해 K번째로 큰 수 구하기 힙을 사용해서 N개의 정렬되지 않은 데이터에 대해 K번째로 큰 숫자를 구하는 방법을 정리해보겠습니다. 1. MinHeap 사용 1ST. 최초 K개의 숫자에 대해 MinHeap을 구성합니다. (arr[0] ~ arr[k-1]) 2ND. 나머지 (N-1) - K개의 데이터값을 MinHeap의 루트와 비교하며 힙을 갱신합니다. (arr[k] ~ arr[n-1]) 2-1. 현재 데이터가 힙의 루트보다 큰 경우 → 힙 루트값 삭제, 현재 데이터 힙에 추가, 다시 MinHeap 만들기 2-2. 현재 데이터가 힙의 루트보다 작은 경우 → 무시 이렇게 N개의 데이터가 MinHeap의 루트와 비교가 끝나면, 힙의 루트값이 K번째로 큰 수가 됩니다. 그림을 통해 살펴보겠습니다. 시간복잡도는 1. K개의 원소로 MinHea.. 2019. 11. 1.