전체 글145 힙(Heap) 이란? 1. 힙(Heap) 1-1. 힙이란? 1-2. 힙의 종류 1-3. 힙의 활용 1-4. 예시(힙 삽입) 1. 힙(Heap) 1-1. 힙이란? 맨 처음에 힙을 들었을 때 엉덩이(hip)가 생각날 수도 있지만 힙은 heap이다. 무언가를 차곡차곡 쌓아 올린 더미라는 뜻이다. 힙(Heap)은 완전이진트리의 형태로 만들어진 자료구조이다. 돌더미, 작장더미, 쓰레기 더미...처럼 위로 갈수록 노드의 수가 줄어드는 모습을 하고 있다. 1-2. 힙의 종류 최대 힙(Max Heap): (완전 이진 트리) + (부모 노드 > 자식 노드) 최소 힙(Min Heap): (완전 이진 트리) + (부모 노드 < 자식 노드) 힙은 위처럼 두 종류로 나뉜다. 다시 풀어서 설명하자면 최대 힙은 완전 이진 트리이면서 부모 노드가 자식 .. 2021. 6. 25. recyclerView를 업데이트 하는 5가지 방법 (notifyDataSetChanged를 사용하지 말자) 1. 사건 배경 2. 증상 3. 리스트를 업데이트하는 5가지 방법 3-1. 전체 업데이트 3-1-1. notifyDataSetChanged 3-2. 변경 3-2-1. notifyItemChanged 3-2-2. notifyItemRangeChanged 3-3. 추가 3-3-1. notifyItemInserted 3-3-2. notifyItemRangeInserted 3-4. 삭제 3-4-1. notifyItemRemoved 3-4-2. notifyItemRangeRemoved 3-5. 이동 3-5-1. notifyItemMoved 4. 해결 방법 5. 또 다른 문제 및 해결 방법 1. 사건 배경 블로그에 포스팅하기 위해서 양방향 바인딩 + recyclerView를 공부하고 있었다. 배달의민족 공지사항을 .. 2021. 6. 18. 합병 정렬(=병합 정렬) 이란? 1. 합병 정렬 1-1. 합병 정렬? 병합 정렬? 1-2. 합병 정렬이란? 1-3. 움짤로 보는 예시 1-4. 글로 보는 예시 1-5. 소스코드 1-6. 합병 정렬의 시간 복잡도 1-7. 합병 정렬은 얼마나 빠를까? 1. 합병 정렬 1-1. 합병 정렬? 병합 정렬? 처음에 이름이 굉장히 헷갈렸다. (합병이 병합이고 병합이 합병 아닌가...? 🥴) 결론부터 말하자면 둘 다 맞는 말이다. 둘 다 사용해도 된다. 개인적으로 궁금해서 둘의 그 미묘한 차이를 알고 싶어 알아봤는데 합병: A와 B가 합쳐져 C가 만들어짐 병합: A가 B의 일부가 되거나 B가 A의 일부가 됨 이 블로거에 의하면 위와 같은 차이가 있다고 한다. 만약 이게 사실이라면 음,,, 나는 합병 정렬이 오늘 배울 내용과 더 적합하지 않을까..?라.. 2021. 5. 30. Binding Adapter(바인딩 어댑터)를 배워보자! 1. Binding Adapter 1-1. Binding Adapter란? 2. 사용법 2-1. Adapter 2-2. Layout 2-3. Activity 3. Binding Adapter의 목적 4. 예제 1. Binding Adapter 1-1. Binding Adapter란? 뷰의 속성을 설정하는 메서드는 여러 가지가 있다. 당장 텍스트 뷰만 해도 텍스트 크기, 텍스트 컬러, 높이, 여백 등등 무수히 많은 옵션들이 있으니 말이다. 하. 지. 만. 그럼에도 불구하고 내가 원하는 기능의 메서드가 없다면 어떻게 해야 할까? 액티비티에서 내가 원하는 메서드를 만들어 사용하듯이 레이아웃에서도 내가 원하는 메서드를 만들어 사용할 수는 없을까? 결론부터 말하자면 할 수 있다. Binding Adapter를 사.. 2021. 5. 29. 퀵 정렬이란? 1. 퀵 정렬 1-1. 퀵 정렬이란? 1-2. 예시 1-3. 소스코드 1-4. 퀵 정렬의 시간 복잡도 1-5. 퀵 정렬은 얼마나 빠를까? 1. 퀵 정렬 1-1. 퀵 정렬이란? 이름값 하는 정렬 방법이다. 평균적으로 꽤나 빠른 속도를 보여준다. 여기서 평균적으로라고 한 이유는 [목차 1-4]에서 설명할 예정이다. 아무튼 이렇게 빠르게 정렬할 수 있는 이유는 분할 정복 방법을 사용했기 때문이다. 분할 정복 방법이란 큰 문제를 작은 문제로 쪼개어 문제를 해결하는 방식이다. 한 번에 먹기에 너무 큰 음식이 있으면 잘라먹듯이 한 번에 들기에 너무 무거운 짐이 있으면 나눠 들듯이 큰 문제를 해결하기 쉬운 작은 문제로 쪼개자는 것이다. 퀵 정렬은 이 개념을 도입한 방법인데 어떻게 정렬되는 건지 다음 목차에서 알아보자.. 2021. 5. 27. 이전 1 ··· 16 17 18 19 20 21 22 ··· 29 다음