본문 바로가기

전체 글146

1204번 - 최빈수 구하기 문제의 저작권은 SW Expert Academy에 있습니다. (출처) 1. 문제 1-1. 문제 설명 1-2. 문제 해석 2. 코드 3. 실행시간 1. 문제 1-1. 문제 설명 1-2. 문제 해석 쉽게 말해서 입력 값 중에 가장 많이 나온 숫자를 출력하는 문제이다. 여러 가지 방법이 있을 수 있겠지만 카운팅 정렬이 가장 빠른 결과를 얻어낼 수 있는 방법이라고 생각했다. 카운팅 정렬은 입력 값의 범위가 적을 때 유용하다는 특징이 있는데 점수가 0점에서 100점 사이니 아주 적절하다고 할 수 있다. 2. 코드 public class Day1_1204_최빈수구하기 { public static void main(String[] args) throws IOException { final int MAX = 101; .. 2021. 8. 1.
힙(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.