~ Today I Learned ~
โ๏ธ ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (์๋ ์ซ์ ๋ํ๊ธฐ)
โ๏ธ ์๋๋ก์ด๋ ์ฑ๊ฐ๋ฐ ์
๋ฌธ ๊ฐ์ ์๊ฐ (1~3์ฃผ์ฐจ)
X๊ณํ์คํจX ํค์ค์คํฌ ๊ณผ์ ๋ณต์ต ๋ฐ ํด์ค
1. ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด (์๋ ์ซ์ ๋ํ๊ธฐ)
[Kotlin] ์๋ ์ซ์ ๋ํ๊ธฐ (ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ)
๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/86051 ์ ๊ทผ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ด๋ถ์ ์์๋ฅผ ๊ฒ์ฌํ๊ณ , ์๋ ๊ฒฝ์ฐ sum์ ์ถ๊ฐํ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค. class Solution { fun solution(numbers: IntArray): Int {
limheejin.tistory.com
- filterNot(numbers::contains) ์ ์ด์ฉํ ํ์ด๊ฐ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ ๋ค.
- ์๊ณ ๋ฆฌ์ฆ์์ ์ฌ์ฉํ '๋ฐฐ์ด ๋ด ํน์ ์์'์ ๊ด๋ จ๋ ๋ฉ์๋๋ค์ ์๋์ ๊ฐ๋ค.
๐ก Kotlin์์ ๋ฐฐ์ด ์์ ํน์ ์์์ ๊ด๋ จ๋ ๋ฉ์๋
val array = arrayOf(1, 2, 3, 4, 5)
val result = 3 in array // true
- in ์ฐ์ฐ์
- ๋ฐฐ์ด ์์ ํน์ ์์๊ฐ ์๋์ง๋ฅผ ๊ฒ์ฌ
- ํด๋น ์์๊ฐ ๋ฐฐ์ด์ ํฌํจ๋์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
val array = arrayOf(1, 2, 3, 4, 5)
val result = array.contains(3) // true
- contains()
- ๋ฐฐ์ด์ ํน์ ์์๊ฐ ํฌํจ๋์ด ์๋์ง๋ฅผ ๊ฒ์ฌ
- ํด๋น ์์๊ฐ ๋ฐฐ์ด์ ํฌํจ๋์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
val array = arrayOf(1, 2, 3, 4, 5)
val containsElement = array.any { it == 3 } // true
- .any()
- ๋ฐฐ์ด์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ํ๋๋ผ๋ ์๋์ง๋ฅผ ํ์ธ
- ๋ง์ฝ ๋ฐฐ์ด์ ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ํ๋๋ผ๋ ์๋ค๋ฉด true๋ฅผ ๋ฐํ, ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
val array = arrayOf(1, 2, 3, 4, 5)
val index = array.indexOf(3) // 2
- indexOf()
- ๋ฐฐ์ด์์ ํน์ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ฒ์
- ํด๋น ์์๊ฐ ๋ฐฐ์ด์ ์์ผ๋ฉด ์ธ๋ฑ์ค๊ฐ, ๋ฐฐ์ด์ ์์ผ๋ฉด -1์ ๋ฐํ
val sortedArray = arrayOf(1, 2, 3, 4, 5)
val index = sortedArray.binarySearch(3) // 2
- binarySearch()
- ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์์ ๊ฒฝ์ฐ, ์ด์ง ๊ฒ์์ ์ํํ์ฌ ํน์ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ฒ์
- ํด๋น ์์๊ฐ ๋ฐฐ์ด์ ์์ผ๋ฉด ์ธ๋ฑ์ค๊ฐ, ๋ฐฐ์ด์ ์์ผ๋ฉด ์์๋ฅผ ๋ฐํ
val array = arrayOf(1, 2, 3, 4, 5)
val filteredArray = array.filter { it == 3 } // [3]
val containsElement = filteredArray.isNotEmpty() // true
- .filter()
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ง์ ์ ํํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑ
- ๋ฐ๋ผ์ ํน์ ์์๊ฐ ๋ฐฐ์ด์ ์๋์ง๋ฅผ ํ์ธํ๋ ๊ฒ๋ณด๋ค๋, ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ์๋์ง๋ฅผ ํ์ธํ๋ ๋ฐ ์ ํฉ
2. ์๋๋ก์ด๋ ์ฑ๊ฐ๋ฐ ์ ๋ฌธ ๊ฐ์ ์๊ฐ (1~4์ฃผ์ฐจ)
1์ฃผ์ฐจ
[Android ๊ธฐ์ด] 01. ์๋๋ก์ด๋OS์ ์ฝํ๋ฆฐ ๊ธฐ์ด ๊ฐ๋
1 ์๋๋ก์ด๋์ ์ฝํ๋ฆฐ ์๋๋ก์ด๋ OS ํน์ง 1. ์คํ์์ค - ๊ฐ๋ฐ์๋ค์ด ์์ค ์ฝ๋์ ์ ๊ทผํ์ฌ ์ด๋ฅผ ์์ ํ๊ณ ๋ฐฐํฌ ๊ฐ๋ฅ - ๋ค์ํ ์ ์กฐ์ฌ๊ฐ ์์ ๋ค์ ๊ธฐ๊ธฐ์ ๋ง์ถคํ ์๋๋ก์ด๋ ๋ฒ์ ์ ๊ฐ๋ฐํ ์ ์
limheejin.tistory.com
[Android ๊ธฐ์ด] 02. ๊ฐ๋ฐ ๋๊ตฌ IDE, AVD์คํ, XML ๊ธฐ๋ณธ ๊ตฌ์กฐ
1 ์๋๋ก์ด๋ ์คํ๋์ค ์ค์น/์์ ํ์ผ ๋ค์ด๋ก๋ ๋ฐ ์ค์นํ๊ธฐ https://developer.android.com/studio?hl=ko ์์ ๋ค์ด๋ก๋ ๋ฐ ์ค์น ์๋๋ก์ด๋ ์คํ๋์ค ์ต์ํด์ง๊ธฐ ํด๋ฐ: ์ฑ ๋ฐ ์๋ฎฌ๋ ์ดํฐ ์คํ, SDK ๋ค์ด๋ก
limheejin.tistory.com
- ์๋๋ก์ด๋ ํ๋ซํผ ๊ตฌ์กฐ(Linux Kernel, HAL, ART, Native C/C++ Libraries, Java API ํ๋ ์์ํฌ, System Apps ๋ฑ)
- ์๋๋ก์ด๋ ์คํ๋์ค ์ค์
- AVD ์คํ
- ํ๋ฉด ์ ํ๊ณผ ์ธํ ํธ
- ๋ฒํผ onclick์ ์ด์ฉํ ํ๋ฉด ๋๊ธฐ๊ธฐ
๊ธฐ์กด์ ์ ๋ฆฌํ ๊ธ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์์ ํ๋ค.
2์ฃผ์ฐจ
[Android ๊ธฐ์ด] 3. ์๋๋ก์ด๋ ์คํ๋์ค ํ์ผ ๊ตฌ์ฑ
Gradle๋น๋ ์ค์ ํ์ผ Gradle: ์๋๋ก์ด๋ ์ฑ์ ๋น๋ ๋๊ตฌ Gradle์ ์ค์ ํ์ผ: build.gradle ํ๋ก์ ํธ ์์ค์ build.gradle(Project:AndroidLab) ๋ชจ๋ ์์ค์ build.gradle(Module:AndroidLab.app) ์ฃผ์๋ฉ๋ด Bookmarks - ๋ถ๋งํฌ ํ
limheejin.tistory.com
- ์๋๋ก์ด๋ ์คํ๋์ค์ ์ฃผ์ ๋ฉ๋ด
- Manifest ํ์ผ, Resource, R.java, .kt, Gradle ์ค์ ํ์ผ
- ๋ฆฌ์์ค ํ์ผ ์ฌ์ ์๊ฐ ํ์ํ ์ด์
3์ฃผ์ฐจ
- UI์ ์์ ฏ๋ถ๋ถ๊น์ง ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ์๋ค. ๋จ์ 3์ฃผ์ฐจ ์ ๋ฐ๊ณผ 4์ฃผ์ฐจ ๊ฐ์๋ ๋ด์ผ ์ ๋ฆฌํ์ฌ ์ฌ๋ฆด ์์ ์ด๋ค.
~ Trouble Shooting ~
1. Github์ ์ปค๋ฐ๋ ํ์ผ์ cloneํ ํ ์ด์์ ๋์ ๋ฌธ์
[Git] ๊น ํด๋ก ์ค๋ฅ - Invalid Gradle JDK configuration found
๊นํ๋ธ์ ์ฌ๋ ค๋ ํ๋ก์ ํธ๋ฅผ ํด๋ก ํ ๋๋ง๋ค ์์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ด๋ค. ์ปดํจํฐ์ ์ด๋ค ์ค์ ์์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์๋ค. Invalid Gradle JDK configuration found ํด๊ฒฐ ๋ฐฉ๋ฒ 1. cmd๋ฅผ ์ด๊ณ
limheejin.tistory.com
- ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ ์๋ฃํ๋ค.
- Java๊ฐ ์ค์น๋์ง ์์ ํ๊ฒฝ๋ณ์ ์ค์ ๋ฐ Gradle JDK ๊ฒฝ๋ก๋ฅผ ๋ค์ ์ค์ ํด์ค์ผ ํ๋ ๋ฌธ์ ์๋ค.
~ Retrospect ~
๋๋์ด ๊ธฐ์ด์ ์ธ ์ฝํ๋ฆฐ ๋ฌธ๋ฒ์ ๋์ฅ๊นจ๊ธฐํ๊ณ , ์๋๋ก์ด๋ ์คํ๋์ค๋ก ์ฎ๊ฒจ์๋ค. ๊ฐ์ธ ํ๋ก์ ํธ๋ ๋ณํํ๊ณ ์ถ์ ์์ฌ์ด ์์ฒญ๋๋ค.