전체 κΈ€

전체 κΈ€

    [λ¬Έμžμ—΄ / Kotlin] 2019 카카였 개발자 겨울 인턴십 - νŠœν”Œ

    문제 풀이 μ–Έμ–΄ Kotlin μ½”λ“œ class Solution { fun solution(s: String): IntArray { val string = s.slice(2 until s.length - 2) val array = string.split("},{") val sortedArray = array.sortedBy { it.length } val answer = mutableListOf() for (e in sortedArray) { val splitString = e.split(',') for (num in splitString) { if (answer.contains(num.toInt()).not()) answer.add(num.toInt()) } } return answer.toIntArray..

    [TIL] 22.03.22

    κ³΅λΆ€ν•œ 것 코루틴 ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1문제 μ•Œκ²Œλœ 것 1. 코루틴 코루틴 은 비동기 처리 λ₯Ό μœ„ν•΄ μ½”ν‹€λ¦° μ—μ„œ μ§€μ›ν•˜λŠ” 라이브러리 이닀. μš°μ„  동기 와 비동기 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. λ™κΈ°λŠ” 응닡을 μš”μ²­ν–ˆμ„ λ•Œ λ°˜ν™˜ 값을 μ–»κΈ° μ „κΉŒμ§€ λŒ€κΈ°ν•˜λŠ” 것을 λœ»ν•˜κ³ , λΉ„λ™κΈ°λŠ” λŒ€κΈ°μ‹œκ°„ λ³„λ„μ˜ Taskλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것을 λœ»ν•œλ‹€. λ™μ‹œμ„± 처리 μž‘λ…„ OS μˆ˜μ—…μ„ 듀을 λ•Œ λ™μ‹œμ„± 처리 에 λŒ€ν•΄μ„œ λ°°μ› μ—ˆλ‹€. 그런데 κ°‘μžκΈ° λ™μ‹œμ„± 처리λ₯Ό μ™œ μ–˜κΈ°ν•˜λŠλƒ, λ™μ‹œμ„± μ²˜λ¦¬κ°€ λΉ„λ™κΈ°μ˜ κ°œλ…μ΄ μ μš©λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€. λ™μ‹œμ„± μ²˜λ¦¬λŠ” 말 κ·ΈλŒ€λ‘œ λ™μ‹œμ— μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것이닀. (Context Switching 이 λ°œμƒν•œλ‹€.) μ‹±κΈ€ μ½”μ–΄ μ—μ„œ λ©€ν‹° μ“°λ ˆλ“œ λ₯Ό ν†΅ν•΄μ„œ 이λ₯Ό κ΅¬ν˜„ν•˜κ³  μžˆλ‹€. μ“°λ ˆλ“œ λ™μ‹œμ„± 처리λ₯Ό μœ„ν•΄μ„œ..

    [TIL] 22.03.20

    κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• μ˜μ‘΄μ„± μ£Όμž… ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1문제 μ•Œκ²Œλœ 것 1. μ˜μ‘΄μ„± μ£Όμž… (Dependancy Injection) μ΄λ²ˆμ— μ˜μ‘΄μ„± μ£Όμž…μ΄λΌλŠ” 것을 처음 μ ‘ν•˜κ²Œ 됐닀. μ˜μ‘΄μ„± μ΄λΌλŠ” 단어 자체λ₯Ό build.gradle 에 μ„ μ–Έν•˜λŠ” implementation 'org.jetbrains... 처럼 라이브러리 μΆ”κ°€ λ§κ³ λŠ” μ ‘ν•΄λ³Έ 적이 μ—†μ—ˆλ‹€. μ•„λ¬΄νŠΌ 였늘 κ°•μ˜ λ₯Ό μˆ˜κ°•ν•˜λ©΄μ„œ μ˜μ‘΄μ„± μ£Όμž… 라이브러리인 Koin 을 μ ‘ν–ˆκ³  이에 κ΄€ν•΄μ„œ μ’€ 더 μ°Ύμ•„λ³΄λŠ” μ‹œκ°„μ„ κ°€μ‘Œλ‹€. μ˜μ‘΄μ„± μ£Όμž… μ΄λΌλŠ” κ°œλ… μžμ²΄λŠ” 어렡지 μ•Šμ•˜λ‹€. μš°μ„  μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄μž. class Car { private val engine = Engine() private fun start() { engine.start() } } class En..

    [BFS][Kotlin] 2021 카카였 μ±„μš©μ—°κ³„ν˜• 인턴십 - 거리두기 ν™•μΈν•˜κΈ°

    문제 풀이 μ–Έμ–΄ Kotlin μ½”λ“œ import java.util.* class Solution { fun solution(places: Array): IntArray { val answer = mutableListOf() val size = places.size for (place in places) { var check = 0 for (i in 0 until size) { for (j in 0 until size) { if (place[i][j] == 'P') { if (bfs(place, i, j, size).not()) { check = 1 break } } } if (check == 1) { break } } if (check == 1) answer.add(0) else answer..

    [TIL] 22.03.19

    κ³΅λΆ€ν•œ 것 MVC, MVP, MVVM, AAC μ•Œκ²Œλœ 것 1. MVC μš°μ„  κ°€μž₯ 일반적으둜 μ‚¬μš©λ˜λŠ” 아킀텍쳐 νŒ¨ν„΄μ΄λ‹€. Model, View, Controller 둜 λ‚˜λ‰œλ‹€. Model 은 데이터 생성, μ‚­μ œ, κ°±μ‹  λ“±μ˜ 둜직이 λ“€μ–΄μžˆλ‹€. View λŠ” μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ§€λŠ” 화면이닀. Controller λŠ” μ‚¬μš©μžμ˜ μž…λ ₯을 μ²˜λ¦¬ν•œλ‹€. μš°μ„  μ‚¬μš©μžκ°€ View λ₯Ό ν†΅ν•΄μ„œ μž…λ ₯이 λ“€μ–΄μ˜€κ³  Controller κ°€ 이λ₯Ό μ²˜λ¦¬ν•œλ‹€. 이 λ•Œ μž…λ ₯을 λΆ„μ„ν•΄μ„œ Model κ³Ό View 에 κ°±μ‹  μš”μ²­μ„ ν•œλ‹€. Model 은 데이터λ₯Ό κ°±μ‹ ν•˜κ³  View λŠ” UI λ₯Ό κ°±μ‹ ν•œλ‹€. μ •λ¦¬ν•˜μžλ©΄, Controller λŠ” Model κ³Ό View κ°€ 무엇을 ν•΄μ•Όν•  지 μ•Œκ³  있고 이λ₯Ό ν†΅μ œν•˜κ³  μžˆλ‹€. Controller λ₯Ό ν†΅ν•΄μ„œ Model κ³Ό..

    [TIL] 22.03.17

    κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• CameraX Glide Content Resolver ScaleGestureDetector μ•Œκ²Œλœ 것 1. AddTextChangedListener λŒ€λΆ€λΆ„μ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 검색창에 검색어λ₯Ό μž…λ ₯ν•˜λ©΄ μ‚¬μš©μžκ°€ Enter λ₯Ό λˆ„λ₯΄κΈ°λ„ 전에 μž…λ ₯ν•œ 검색어에 따라 μžλ™μ™„μ„± 검색어가 λ³€κ²½λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€. 이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„  EditText 의 ν…μŠ€νŠΈ λ³€ν™”λ₯Ό κ°μ§€ν•΄μ•Όν•˜λŠ”λ° 이λ₯Ό AddTextChangedListener λ₯Ό 톡해 감지할 수 μžˆλ‹€. private fun bindViews() = with(binding) { editTextView.addTextChangedListener { Log.d("Changed!", editTextView.text.toString()) ..

    [TIL] 22.03.16

    κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• Retrofit2, OkHttpLoggingInterceptor Shimmer Glide Content Resolver Unsplash API μ•Œκ²Œλœ 것 1. Glide 였늘 곡뢀λ₯Ό ν•˜λ©΄μ„œ Glide κ°€ 생각보닀 μ—„μ²­ κ°•λ ₯ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λΌλŠ” 것을 κΉ¨λ‹¬μ•˜λ‹€. Glide λ₯Ό μ‚¬μš©ν•œμ§€λŠ” κ½€ λμ§€λ§Œ 이λ₯Ό μ œλŒ€λ‘œ μ‚¬μš©ν•˜κ³  μžˆμ§€ μ•Šμ•˜λ‹€. μš°μ„  κ·Έλ™μ•ˆ Glide λ₯Ό μ‚¬μš©ν•  λ•Œ μ•„λž˜μ²˜λŸΌ 써왔닀. κ·Έλƒ₯ λ‹¨μˆœνžˆ 이미지뷰에 이미지λ₯Ό λ„£μ–΄μ£ΌκΈ° μœ„ν•œ μš©λ„λ‘œ... private fun bindViews() { Glide.with(binding.root) .load(profileImageUrl) .into(binding.profileImageView) } ν•˜μ§€λ§Œ 정말 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆμ—ˆλ‹€. ..

    [TIL] 22.03.15

    κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• μ•Œκ²Œλœ 것 1. OkHttpLogging Retrofit 을 μ‚¬μš©ν•΄μ„œ API λ₯Ό ν˜ΈμΆœν•  λ•Œ ν΄λΌμ΄μ–ΈνŠΈμ˜ λ¬Έμ œμΈμ§€ μ„œλ²„μ˜ λ¬Έμ œμΈμ§€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ HTTP 의 둜그λ₯Ό λ΄μ•Όν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 이 λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” 것이 OkHttp 의 HttpLoggingInterceptor 이닀. // Retrofit Interface λ₯Ό κ΅¬ν˜„ν•œλ‹€. private val openApiService : OpenApiService by lazy { Retrofit.Builder() .baseUrl(Url.OPEN_API_BASE_URL) .addConverter(GsonConverterFactory.create()) .client(buildOkHttpClient()) .build() .crea..

    [TIL] 22.03.14

    κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• μΉ΄μΉ΄μ˜€ν†‘, 곡곡데이터 API Retrofit, OkHttpLoggingInterceptor FusedLocationProvider Coroutine AppWidgetProvider Service Lifecycle μ•Œκ²Œλœ 것 1. FusedLocationProvider μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ μœ„μΉ˜ 정보λ₯Ό λ°›μ•„μ˜¬ 수 μžˆλŠ” λ°©λ²•μ—λŠ” LocationManager 와 FusedLocationProvider κ°€ μžˆλ‹€. μš°μ„  LocationManager 은 getLastKnownLocation λ˜λŠ” LocationListener λ₯Ό ν†΅ν•΄μ„œ μœ„μΉ˜ 정보λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλ‹€. // LocationManager λ₯Ό μ •μ˜ν•œλ‹€. val locationManager = getSystemService(LOCA..

    [TIL] 22.03.13

    κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• AppWidgetProvider ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1문제 μ•Œκ²Œλœ 것 μ•ˆλ“œλ‘œμ΄λ“œ μœ„μ ―μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” Manifest 에 Recevier λ₯Ό λ“±λ‘ν•˜κ³  이 λ•Œ action κ³Ό meta-data λ₯Ό λ„£μ–΄μ€€λ‹€. meta-data : μœ„μ ― λ ˆμ΄μ•„μ›ƒμ˜ 크기, 초기 λ ˆμ΄μ•„μ›ƒ λ¦¬μ†ŒμŠ€, μ—…λ°μ΄νŠΈ λΉˆλ„ λ“± μ•± μœ„μ ―μ˜ 기본적인 νŠΉμ„±μ„ μ •μ˜ν•œλ‹€. minWidth, minHeight : μœ„μ ―μ΄ 기본적으둜 μ‚¬μš©ν•˜λŠ” μ΅œμ†Œ 크기이닀. updatePeriodMillis : onUpdate λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μœ„μ ―μ„ μ—…λ°μ΄νŠΈν•˜λŠ” λΉˆλ„λ₯Ό κ²°μ •ν•œλ‹€. μ—…λ°μ΄νŠΈ μ‹œμ— λ””λ°”μ΄μŠ€ λŒ€κΈ°λͺ¨λ“œκ°€ ν•΄μ œλ˜λ―€λ‘œ λ°±κ·ΈλΌμš΄λ“œμ—μ„œλŠ” μ΅œμ†Œ 30λΆ„, 이보닀 짧은 μ‹œκ°„ κ°„κ²©μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” 것을 κΈˆν•œλ‹€. previewImage : μ•± μœ„μ ―..