본문 바로가기

오늘은 뭘 배울까?68

LiveData(라이브 데이터)란? 1. LiveData란? 1-1. Observer 1-2. LiveData 1-3. LiveData의 장점 2. 사용법 2-1. gradle 2-2. LiveData 객체 생성 2-3. Observer 객체 생성 3. 예제 4. 더 알아보기 3-1. LifeCycleOwner 3-2. observeForever 1. LiveData란? 1-1. Observer class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // activity 설정 관련 소스 생략 DB에서 초기 아이템 목록 호출 UI 업데이트 추가 버튼 클릭 리스너 { 아이템 추가 UI 업데이트 } 삭제 버튼 클릭 리스너 { 아이.. 2021. 5. 14.
삽입 정렬이란? 1. 삽입 정렬 1-1. 삽입 정렬이란? 1-2. 예시 1-3. 소스코드 1-4. 삽입 정렬의 시간 복잡도 1. 삽입 정렬 1-1. 삽입 정렬이란? 정렬 방법 중 가장 느린 버블 정렬 버블 정렬보다 조금 빠른 선택 정렬 그리고 선택 정렬보다 조금 빠른 것이 오늘 배울 삽입 정렬이다. 이미 정렬되어있는 수열 중 자신이 들어가야 할 위치를 찾아 삽입한다 하여 삽입 정렬이라는 이름이 붙었다. 말로만 들어서는 이해가 잘 안 가니 다음 예시를 통해 알아보자. 1-2. 예시 위와 같은 숫자를 정렬한다고 치자. 첫 번째 바퀴 [5]와 [7]을 비교해보자. 자리 바꿈이 필요할까? NO! 그렇다면 다음으로 넘어가자. 두 번째 바퀴 [7]와 [8]을 비교해보자. 자리 바꿈이 필요할까? NO! 그렇다면 다음으로 넘어가자. .. 2021. 5. 13.
선택 정렬이란? 1. 선택 정렬 1-1. 선택 정렬이란? 1-2. 움짤로 보는 예시 1-3. 글로 보는 예시 1-4. 소스코드 1-5. 선택 정렬의 시간 복잡도 1. 선택 정렬 1-1. 선택 정렬이란? 정렬 방법 중 가장 느린 것은 버블 정렬. 그리고 그다음으로 느린 방법이 바로 선택 정렬이다. 버블 정렬과 마찬가지로 구현이 단순하며 메모리 공간을 추가로 필요로 하지 않는다. 버블 정렬은 자리 바꿈(swap)이 자주 일어나지만 선택 정렬은 평균적으로 그 횟수가 더 적기 때문에 버블 정렬보다 선택 정렬이 항상 더 나은 효율을 보여준다. 움짤을 통해 어떻게 하는 정렬 방법인지 알아보도록 하자. 1-2. 움짤로 보는 예시 숫자들 중 가장 작은 값을 선택해서 맨 왼쪽에 있는 값과 교환하는 것이 기본적인 개념이다. 가장 작은 값.. 2021. 5. 12.
버블 정렬이란? 1. 버블 정렬 1-1. 버블 정렬이란? 1-2. 움짤로 보는 예시 1-3. 글로 보는 예시 1-4. 소스코드 1-5. 버블 정렬의 시간 복잡도 1. 버블 정렬 1-1. 버블 정렬이란? 버블 정렬이란 거품이 뽀글뽀글 올라가는 것처럼 보인다고 해서 붙여진 이름이다. (네이밍 너무 귀엽잖아.. 🥰) 이름도 귀엽고 정렬 중에는 구현하기 가장 쉬운 편에 속해서 개인적으로 제일 좋아했던 정렬이었으나 알고리즘 공부를 하면서 이놈이 효율이 쓰레기 좋지 않다는 것을 알게 되고 전혀 쓰지 않는다. 심지어 내장 기능으로 탑재된 정렬이 이것보다는 좋아서.. 버블 정렬은 "이걸 써먹겠어!"라고 해서 배우기보다는 정렬이란 무엇인가... 어떤 것들이 있는가... 를 알아보기 위해 배우는 것이다. 기본적인 개념은 말로 백번 설명하.. 2021. 5. 11.
시간 복잡도란? 1. 시간 복잡도 1-1. 시간 복잡도란? 1-2. Big-O 표기법 2. 예제 2-1. O(1) 2-2. O(n) 2-3. O(n²) 2-4. O(n³) 2-5. O(nm) 2-6. O(2ⁿ) 2-7. O(logn) 3. 그 외 3-1. 상수항 무시 3-2. 영향력이 낮은 항 무시 3-3. 대략적인 소요시간 추측하기 1. 시간 복잡도 1-1. 시간 복잡도란? 우리가 작성한 코드는 실행시간이 얼마나 걸릴까? 실행해보기 전에 정확한 시간을 추측하는 것은 힘들겠지만 반복문을 몇 번 사용했는지, 입력값은 어떻게 되는지 등을 통해 대략적으로 이 정도 되겠구나.. 를 추측할 수 있다. 즉, 우리는 입력값과 연산 수행 시간의 상관관계를 나타내는 척도를 시간 복잡도라고 한다. 1-2. Big-O 표기법 같은 알고리즘.. 2021. 5. 10.