RxJava์์๋ Observable์ ๊ตฌ๋ (subscribe)ํ๋ Observer๊ฐ ์กด์ฌํ๊ณ , Observable์ด ์์ฐจ์ ์ผ๋ก ๋ฐํํ๋ ๋ฐ์ดํฐ์ ๋ํด์ ๋ฐ์ํ๋ค.Observable์ ์ธ๊ฐ์ง ์ด๋ฒคํธ๋ฅผ ํตํด ๋์ํ๋ค.์ข ๋ ์ฝ๊ฒ ์๊ธฐํ์๋ฉด ์ ํ๋ธ๋ฅผ ์๊ฐํ๋ฉด ๋๋ค.Obse
RxJava๋ ReactiveX(Reactive Extensions)๋ฅผ ์๋ฐ๋ก ๊ตฌํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.ReactiveX๋ ์ต์ ๋ฒ ํจํด, ์ดํฐ๋ ์ดํฐ ํจํด, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ๊ณผ ๊ฐ๋ ์ ์ ๋ชฉํ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.์ฃผ๋ณ ํ๊ฒฝ๊ณผ ๋์์์ด ์ํธ ์์ฉ์ ํ๋ ํ๋ก๊ทธ๋๋ฐ
๊ฒ์ํ๊ณ ์ ํ๋ ํค ๊ฐ์ ํด์ํจ์๋ฅผ ์ด์ฉํ์ฌ ํด์์ฝ๋๋ฅผ ๋ง๋ค๊ณ ์ด๊ฒ์ ์ธ๋ฑ์ค๋ก ํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.์ด๋ฌํ ํด์ํ ์ด๋ธ์ ์๋๊ฐ ๋น ๋ฅด๋ค(feat. O(1))๋ ์ฅ์ ์ ๊ฐ๊ณ ์๋ค.์๋๊ฐ ๋น ๋ฅธ ์ด์ ๋ ํด์ํ ์ด๋ธ์ ๋ฐฐ์ด์ ๊ณ ์ ๋ ํฌ๊ธฐ ๋งํผ ๋ง๋ค๊ณ ํด์ํจ์๋ก๋ถํฐ ๋ง๋ค์ด์ง ํด์์ฝ๋๋ฅผ
์ฌ์ดํด์ด ์๋ ๋ฐฉํฅ ๊ทธ๋ํ์์ ์์ ์ ์์๊ฐ ์ ํด์ ธ ์์ ๋ ์์ ์ ์ ํํ๊ฒ ์ ๋ ฌํด์ฃผ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.์ฆ, ์์์ ์ด ์กด์ฌํด์ผ๋ง ํ๊ณ ์์๊ฐ ์ ํด์ ธ์๋ ์์ ์ ์ฐจ๋ก๋ก ์ํํด์ผํ ๋ ๊ทธ ์์๋ฅผ ๊ฒฐ์ ํด์ผํ ๋ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.Queue๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ Stack์ ์ฌ์ฉ
leetcode 207. Course Schedule๋ฌธ์ ์์ ์ํ๋ ๊ฒ์ ๊ฒฐ๊ตญ ์ฝ์ค๋ฅผ ์์๋๋ก ๋ค์ ์ ์๋์ง๋ฅผ ๋ฌผ์ด๋ณด๋ ๊ฒ์ด๋ค.์ฌ๊ธฐ์ ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์๋ค.Input: numCourses = 2, prerequisites = \[1,0
ViewModel ํด๋์ค๋ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ธ์ํ๋ฉฐ, UI์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.ViewModel ํด๋์ค๋ ํ๋ฉด ํ์ ๊ฐ์ ๊ตฌ์ฑ ๋ณ๊ฒฝ์์๋ ์ด์๋จ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํฉ๋๋ค.์๋๋ก์ด๋ ํ๋ ์์ํฌ๋ ์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ ๊ฐ์ UI ์ปจํธ๋กค๋ฌ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค
ํ์ ๋ฒ์๋ฅผ ์ค์ฌ๋๊ฐ๋ฉฐ ํน์ ๊ฐ์ ์ฐพ์๋ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.๋ฆฌ์คํธ๊ฐ ์ ๋ ฌ์ด ๋์ด์์ด์ผ๋ง ํ๋ค๋ ๋จ์ ์ด ์๊ธฐ๋ ํ์ง๋ง ์์ฐจ ํ์์ ๋นํด ํ์ ์๊ฐ์ด ๊ต์ฅํ ๋น ๋ฅด๋ค.์ ๋ค์ด ๊ฒ์์ ํด๋ดค์ผ๋ฉด ์๊ฒ ์ง๋ง, ์ค๊ฐ๊ฐ์ ์ธ์น ํ ์ ๋ค์ด์ ๋ฃ๊ณ ๋ ๊ทธ์ ์ค๊ฐ ๊ฐ์ ์ธ์น๊ณ ์ ํด์ง ๊ฐ์ ์ฐพ๋
๋ฐฐ์ด์ ์ต๋ ๊ธธ์ด๊ฐ 10^5์ด๋ฏ๋ก ์ด์คํฌ๋ฌธ์ผ๋ก ์ฐ์๋๋ ๋ฐฐ์ด์ ์ต๋ ํฉ์ ๊ตฌํ๋ ๊ฑด ๋ฌด๋ฆฌ๊ฐ ์๋ค. ๊ทธ๋์ ๋ถํ - ์ ๋ณต ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ผํ๋ค.์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค(low)์ ๋ง์ง๋ง ์ธ๋ฑ์ค(high)๋ก ์ค๊ฐ์ง์ ์ ์ธ๋ฑ์ค(mid)๋ฅผ ๊ตฌํ ๋คmid์์ low๊น์ง์ ์ต๋ ํฉ, mi
์ฒ์์ ํฌํฌ์ธํฐ, ๋ถํ ์ ๋ณต ๊ธฐ๋ฒ์ผ๋ก ํ๋ ค๊ณ ํ์ง๋ง, ์ ํ๋ ค์ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.์ฐ์ , ๋ฌธ์ ์์ ์ ๊ฒฝ์จ์ผ ํ ๋ถ๋ถ๋ค์ ์ ๋ฆฌํ๋ค.์ฐ์๋ ๋ฐฐ์ด์ ์ต๋ ๊ณฑ์ ๊ตฌํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ 0๊ณผ ์์๋ฅผ ์๊ฐํ๋ค.0์ด ๋์ค๋ฉด ํ์ ๊ฐ์ ์์๋ง ์์ง ์์ ์ด์ ๋ต์ด ๋ ์ ์
LiveData๋ ๊ด์ฐฐ ๊ฐ๋ฅํ(Observable) ๋ฐ์ดํฐ ํด๋์ค์ ๋๋ค. ๋๋ถ์ด Lifecycle์ ํตํด ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ธ์ํ๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.LiveData๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ์ด ๋๋ฉด ํ์ฑํ๋ ๊ด์ฐฐ์๋ฅผ ํตํด ์๋ฆฝ๋๋ค. ์ด ๋, LifecycleOwner์ ์๋ช ์ฃผ๊ธฐ๊ฐ
https://www.acmicpc.net/problem/10775i๋ฒ์งธ ๋นํ๊ธฐ๊ฐ ์ฃผ์ด์ง ๊ฐ์ ํตํด ๊ฒ์ดํธ์ ๋ํนํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด์๋์ฃผ์ด์ง ๊ฐ๋ถํฐ ์ฒดํฌํ๋ฉฐ 1๋ฒ ๊ฒ์ดํธ๊น์ง ํ์์ ํด์ผํ๋ค๊ณ ์๊ฐํ๋ค.์๋ํ๋ฉด ๋ฌธ์ ์์ ์๊ตฌํ๋ output์ ์ต
https://www.acmicpc.net/problem/1717union-find ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๋ ์ค ๋ฐ๊ฒฌํ ๋ฌธ์ ์ฌ์ ์ ๊ทผ์ ์ฒ์๋ถํฐ union-find๋ฅผ ์ฐ๋ฉด ๋๊ฒ ๊ตฌ๋๋ผ๊ณ ์๊ฐํ๋ค.m๊ฐ์ ์ค์๋ ๊ฐ๊ฐ 0,a,b or 1,a,b์ ํํ๋ก ์ฐ์ฐ์ด ์ฃผ์ด์ง๋ค.
๊ฐ๋จํ๊ฒ๋ ํฉ์งํฉ์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.์ฌ๋ฌ ๋ ธ๋ ์ค ๋ ๊ฐ์ ๋ ธ๋๋ฅผ ์ ํํ์ฌ ์๋ก ๊ฐ์ ๊ทธ๋ํ์ ์ํ๋์ง ํ๋ณํ๋(find) ์๊ณ ๋ฆฌ์ฆ์ด์ ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ๊ฒ๋ ํฉ์น๋(union) ์๊ณ ๋ฆฌ์ฆ์ด๋ค.์ ๊ทธ๋ฆผ์ฒ๋ผ ๋ชจ๋ ์ฐ๊ฒฐ๋์ด ์์ง ์๋ค๋ฉด, ๋ชจ๋ ๊ฐ๋ค์ ๋ถ๋ชจ๋
์์ํ๊ธฐ๋ ๋ณ๋ค๋ฅธ ๋ฌธ์ ์์ด ๊ณต์ ๋ฌธ์ํ์ด์ง์์ ํ์ธํ๋ฉด ๋ฉ๋๋ค.Firebase Cloud Storage๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ ์ฅํ๋ฉด ๋ฒํท์ ์ ์ฅ๋๋ค๊ณ ํฉ๋๋ค.๋ฒํท์ ๋ชจ์ต์ ๋๋ต ์ด๋ฌํ๋ค. ์์ง ์ฑ์ผ๋ก ๊ตฌํ ์ ์ด๊ธฐ ๋๋ฌธ์ ์น์์ ์ ๊ณตํ๋ 'ํ์ผ ์ ๋ก๋'๋ฅผ ํตํดํด์ง ์ฆ๋ช ์
null ๋ณํฉ ์ฐ์ฐ์(??)๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ ์ฝ๋์ฒ๋ผ ์ถ์์ํฌ ์ ์๋ค.person.korName์ด null์ผ ๊ฒฝ์ฐ person.engName์ ์ฌ์ฉํ๊ณ , ์๋ ๊ฒฝ์ฐ person.korName์ ์ฌ์ฉํ๋ค.์์ ๊ธ์ ์๋ Data Binding์ ์ฅ์ ์์ 'Null P
https://programmers.co.kr/learn/courses/30/lessons/67259์ ๋ฆฌ๋ถํฐํ๋ฉด ์กฐ๊ฑด์ ๋ง๊ฒ bfs๋ฅผ ํ์ฉํ์ฌ ๋ชฉ์ ์ง๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.์ฃผ์ํ ์ ์ ์ฝ๋๋ฅผ ๋ ๋๋ 500์์ด ์๋๋ผ 600์์ผ๋ก ๊ณ์ฐํด์ผํ๋ค. (๊ทธ
โ๏ธ '์ํคํ ์ฒ๋ฅผ ์์์ผ ์ฑ ๊ฐ๋ฐ์ด ๋ณด์ธ๋ค' ์ฑ ์ ๋ณด๋ฉฐ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. >### Data Binding์ด๋ ๐ก Jetpack ์ํคํ ์ฒ Data Binding Lifecycles LiveData Navigation Paging Room ViewMode
โ๏ธ '์ํคํ ์ฒ๋ฅผ ์์์ผ ์ฑ ๊ฐ๋ฐ์ด ๋ณด์ธ๋ค' ์ฑ ์ ๋ณด๋ฉฐ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. >### ์ปดํฌ๋ํธ ์ปดํฌ๋ํธ๋ ๋ฐ์ธ๋ฉ๋ ๋ชจ๋๋ก๋ถํฐ ์ค๋ธ์ ํธ ๊ทธ๋ํ๋ฅผ ์์ฑํ๋ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค. @Component๋ฅผ ํตํด ์์ฑ์ด ๊ฐ๋ฅํ๊ณ , interface๋ abstract
Dagger 2๋ ์๋ฐ์ ์๋๋ก์ด๋๋ฅผ ์ํ ๊ฐ๋ ฅํ๊ณ ๋น ๋ฅธ ์์กด์ฑ ์ฃผ์ ํ๋ ์์ํฌ์ด๋ค.๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ง ์๊ณ , ๋ฐํ์์ ๋ฐ์ดํธ ์ฝ๋๋ก ์์ฑํ์ง ์๋๋ค.์ปดํ์ผ ํ์์ ์ด๋ ธํ ์ด์ ํ๋ก์ธ์์ ์ํด ์์กด์ฑ ์ฃผ์ ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์๋ฐ์์ค์ฝ๋๋ฅผ ์์ฑํ๋ค.์์ ๊ณต์ ์
โ๏ธ JVM์ ํ๋ซํผ์ ์ข ์์ ์ด๋ค.๐ก ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋?๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋์ธ ํด๋์ค๋ฅผ ์์ฑํ๊ณ ,๊ฐ์ฒด์ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ง๋ ๋ค.Java๋ ๊ฐ์ฒด์งํฅ์ธ์ด๊ฐ ๊ฐ์ ธ์ผ ํ ์บก์ํ, ์์, ๋คํ์ฑ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์๋ค.์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์