์ฝ”ํ‹€๋ฆฐ 15

Date and Time Formatting in Kotlin with the DateTime Library

์ตœ๊ทผ ํšŒ์‚ฌ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ค‘, ์„œ๋ฒ„์—์„œ ๋‚ด๋ ค์ฃผ๋Š” DateFormat(”2024-03-11 07:18:25”)๊ณผ ๋””์ž์ธ์ชฝ์—์„œ ์›ํ•˜๋Š” DateFormat(”03/11/2024 07:18:25”)์ด ๋‹ฌ๋ผ ๋ฐ˜๋‚˜์ ˆ์„ ์‚ฝ์งˆํ•œ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ,, ์ด ์ฃผ์ œ๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค…๐Ÿฅน kotlinx-datetime ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” “v0.6.0-RC”์—์„œ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์— ๊ด€ํ•œ Formatting Options ์˜ˆ๋ฅผ๋“ค์–ด “March 1, 2024, at 9:15 AM”์„ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ๋‹ค๋ฉด, LocalDateTime(2024, 3, 1, 9, 15, 0, 0) ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LocalDateTime LocalDateTime.Formats.ISO → 2024-03-01T09:15:00 L..

์ฝ”ํ‹€๋ฆฐ Kotlin split("")์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์ด์œ 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ž์—ด ๋Œ๋ฆฌ๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.0 ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ์ž์กด๊ฐ์„ ์˜ฌ๋ฆฌ๊ณ  ์žˆ๋˜ ๋„์ค‘, split ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋†€๋ผ์šด ์‚ฌ์‹ค(?)์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋œ ๋ฌธ์ œ๋Š” '๋ฌธ์ž์—ด ๋Œ๋ฆฌ๊ธฐ'๋ผ๋Š” ๋ฌธ์ œ๋‹ค. https://school.programmers.co.kr/learn/courses/30/lessons/181945 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr 'split์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ชผ๊ฐœ์„œ map์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๊ตฐ..'์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค. fun main(args: Array) { readLine()!!.split("").map { pr..

Kotlin 2023.12.03

Kotlin ์ฝ”ํ‹€๋ฆฐ ๋ฌธ์ž์—ด ๋Œ€์†Œ๋ฌธ์ž ํ•จ์ˆ˜๋“ค(toUpperCase, caplitalize ๋“ฑ) Deprecated๋œ ์ด์œ 

์ฝ”ํ‹€๋ฆฐ 1.5์—์„œ ๋ฌธ์ž์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” capitalize, ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” toUpperCase ๋“ฑ ์ž๋ฐ”์—์„œ ์ต์ˆ™ํ•˜๋˜ ๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋ฌธ์ž ๊ด€๋ จ ํ•จ์ˆ˜๋“ค์ด ๋ชจ๋‘ deprecated ๋˜์—ˆ๋‹ค. capitalize๋ฅผ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์ œ์•ˆํ•˜๋Š” ํ˜•์‹๋Œ€๋กœ ๋ฐ”๊พธ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ๋‹ค. import java.util.* fun main(args: Array) { var beverage = readLine()?.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } println(beverage) } ์ž˜ ์“ฐ๋˜ capitalize๋ฅผ ๋†”๋‘๊ณ  ์™œ ์ด๋ ‡๊ฒŒ ์•ˆ์˜ˆ์œ(...) ..

Kotlin 2023.03.10

Kotlin ์ฝ”ํ‹€๋ฆฐ ๋ฐฑ์ค€ 2659 ์‹ญ์ž์นด๋“œ ๋ฌธ์ œ

https://www.acmicpc.net/problem/2659 2659๋ฒˆ: ์‹ญ์ž์นด๋“œ ๋ฌธ์ œ ์ž…๋ ฅ์€ ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ด ํ•œ ์ค„์€ ์นด๋“œ์˜ ๋„ค ๋ชจ์„œ๋ฆฌ์— ์”Œ์—ฌ์žˆ๋Š” 1 ์ด์ƒ 9 ์ดํ•˜์˜ ์ˆซ์ž 4๊ฐœ๊ฐ€ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ์ž…๋ ฅ๋œ๋‹ค. ๊ฐ ์ˆซ์ž ์‚ฌ์ด์—๋Š” ๋นˆ์นธ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. www.acmicpc.net ๋„ค ์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์ธ ์‹œ๊ณ„์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ, ๋ชจ๋“  ์‹œ๊ณ„์ˆ˜๋“ค ์ค‘์—์„œ ๋ช‡ ๋ฒˆ์งธ๋กœ ์ž‘์€ ์‹œ๊ณ„์ˆ˜์ธ์ง€ ์นด์šดํŠธํ•ด์ฃผ๋ฉด ๋œ๋‹ค! import java.lang.Integer.min /** * ์‹ญ์ž์นด๋“œ ๋ฌธ์ œ * https://www.acmicpc.net/problem/2659 */ private var card = 0 private var answer = 0 private fun getClockNum(num: Int): I..

Kotlin 2022.12.16

Kotlin ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜

Kotlin https://developer.android.com/kotlin/style-guide?hl=ko Kotlin ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ | Android ๊ฐœ๋ฐœ์ž | Android Developers Kotlin ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ์ด ๋ฌธ์„œ์—์„œ๋Š” Kotlin ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์†Œ์Šค ์ฝ”๋“œ์™€ ๊ด€๋ จ๋œ Google์˜ Android ์ฝ”๋”ฉ ํ‘œ์ค€์„ developer.android.com Kotlin in Android https://developer.android.com/kotlin/common-patterns?hl=ko Android์—์„œ ์ผ๋ฐ˜์ ์ธ Kotlin ํŒจํ„ด ์‚ฌ์šฉ | Android ๊ฐœ๋ฐœ์ž | Android Developers Androi..

Kotlin 2022.12.02

Kotlin ์ฝ”ํ‹€๋ฆฐ ๋ฐฑ์ค€ 2439 ๋ณ„ ์ฐ๊ธฐ - 2

์—ฌ๋Ÿฌ๋ถ„!(0๋ช…) ์ €๋Š” ์š”์ฆ˜ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘ธ๋Š” ์—ฐ์Šต์„ ํ•˜๊ณ ์žˆ๋‹ต๋‹ˆ๋‹ค,, ํ•˜์ง€๋งŒ ์ž๋ฃŒ๊ฐ€ ๋งŽ์ด ์—†๋”๋ผ๊ตฌ์š” . . ( แต• ฬฏ แต•ฬฉฬฉ ) ๊ทธ๋ž˜์„œ Kotlin ์นดํ…Œ๊ณ ๋ฆฌ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์˜ฌ๋ ค๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ณธ ์ค‘ ๊ธฐ๋ณธ์ธ ๋ณ„ ์ฐ๊ธฐ๋ถ€ํ„ฐ ๊ฐ€ ๋ณด ์ž ๊ณ  https://www.acmicpc.net/problem/2439 2439๋ฒˆ: ๋ณ„ ์ฐ๊ธฐ - 2 ์ฒซ์งธ ์ค„์—๋Š” ๋ณ„ 1๊ฐœ, ๋‘˜์งธ ์ค„์—๋Š” ๋ณ„ 2๊ฐœ, N๋ฒˆ์งธ ์ค„์—๋Š” ๋ณ„ N๊ฐœ๋ฅผ ์ฐ๋Š” ๋ฌธ์ œ ํ•˜์ง€๋งŒ, ์˜ค๋ฅธ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ๋ณ„(์˜ˆ์ œ ์ฐธ๊ณ )์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค. www.acmicpc.net ์ž…๋ ฅ๊ฐ’ N์— ๋”ฐ๋ผ N - i ๋งŒํผ ๊ณต๋ฐฑ์„ ์ถœ๋ ฅํ•˜๊ณ , *๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. private var N: Int = 0 private fun solution() { for (i ..

Kotlin 2022.11.17

์•ˆ๋“œ๋กœ์ด๋“œ ์ƒํƒœ๋ฐ” (statusBar) ์—†์• ๊ธฐ

์•ˆ๋“œ๋กœ์ด๋“œ ์ƒํƒœ๋ฐ” (statusBar) ์—†์• ๊ธฐ SplashActivity๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ผญ ํ•„์š”ํ•œ ์ƒํƒœ๋ฐ” ์—†์• ๋Š” ๋ฐฉ๋ฒ•! ์–ธ์–ด๋Š” ์ฝ”ํ‹€๋ฆฐ ์ž…๋‹ˆ๋‹ค. class SplashActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash) // ์ƒํƒœ๋ฐ” ์—†์• ๊ธฐ @Suppress("DEPRECATION") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.insetsController?.hide(WindowInsets.Type.statusBa..

Android 2021.07.17

์•ˆ๋“œ๋กœ์ด๋“œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding) ์‹œ์ž‘ํ•˜๊ธฐ

Data Binding ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding)์„ ์จ์•ผํ•˜๋Š” ์ด์œ  ์•ˆ๋“œ๋กœ์ด๋“œ๋ฅผ ๋ฐฐ์šฐ๋Š” ์ดˆ๊ธฐ์—๋Š” findViewById()๋ฅผ ๋งŽ์ด ์“ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ findViewById()๋Š” runtime์‹œ ๋ทฐ์˜ ๊ณ„์ธต์„ ํƒ€๊ณ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ๋น„ํšจ์œจ์ ์ธ ํ•จ์ˆ˜์ด๋‹ค. ๊ฐ„๋‹จํ•œ ์•ฑ์—์„œ๋Š” ์ƒ๊ด€์—†์ง€๋งŒ, ์•ฑ์ด ์ปค์ง€๋ฉด ํšจ์œจ์ด ๋–จ์–ด์ง„๋‹คใ…œใ…œ Data Binding์€ ๊ฐ ๋ ˆ์ด์•„์›ƒ xml๋งˆ๋‹ค binding class๋ฅผ ๋งŒ๋“ ๋‹ค. (activity_main ⇒ ActivityMainBinding) ๊ทธ๋ž˜์„œ binding class๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ทฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์„œ, ์ฝ”๋“œ๋„ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค. ๋˜ํ•œ, ์š”์ฆ˜ ๋งŽ์ด ์“ฐ๋Š” MVVM ์•„ํ‚คํ…์ณ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(Data Binding)์˜ ์žฅ์  findViewById()์˜ ๋น„ํšจ์œจ์„ฑ์„ ๊ฐœ..

Android 2021.06.05

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ”„๋กœ์ ํŠธ Java๋ฅผ Kotlin์œผ๋กœ ๋ณ€ํ™˜ (java kt๋กœ ๋ฐ”๊พธ๊ธฐ)

์‹ ๋‚˜๊ฒŒ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋˜ ์–ด๋Š ๋‚  , , ๋ฌธ๋“ MainActivity๊ฐ€ Java๋กœ ๋˜์–ด์žˆ๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค. ์•Œ๊ณ  ๋ณด๋‹ˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ์ž๋ฐ”๋กœ ๋งŒ๋“ค์—ˆ๋˜ ๊ฒƒ,,,,, ๋‚˜๋จธ์ง€๋Š” ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๋‹ค ์ž‘์—…ํ•ด๋†”์„œ ๋‹คํ–‰์ด์—ˆ์ง€๋งŒ, MainActivity๋งŒ Java๋กœ ๋˜์–ด์žˆ์–ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜ ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์—ญ์‹œ ํ‚น๊ฐ“ํ‹€๋ฆฐ...๐Ÿ‘ MainActivity์—์„œ ์šฐํด๋ฆญํ•˜๋ฉด, Convert Java File to Kotlin File ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค..! ํŒ์—…์ฐฝ์ด ๋œจ๋Š”๋ฐ ๊ทธ๋ƒฅ OK ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž ์‹œ ํ›„... ์•„์ฃผ ๋‚˜์ด์Šค ํ•˜๊ฒŒ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๋ฐ”๋€๋‹ค!!!!!

Android 2021.05.28

Plugin [id: 'kotlin-android'] was not found in any of the following sources ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

Plugin [id: 'kotlin-android'] was not found in any of the following sources Plugin [id: 'kotlin-kapt'] was not found in any of the following sources plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } Room ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋ ค๊ณ  plugin์— 'kotlin-android'์™€ 'kotlin-kapt'๋ฅผ ์ถ”๊ฐ€ํ•˜๋‹ˆ๊นŒ ์ด์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.๐Ÿ˜ข ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• Project ๋ ˆ๋ฒจ์˜ Gradle ํŒŒ์ผ๋กœ ๊ฐ„๋‹ค. Gradle ํŒŒ์ผ์— ์ž๊ธฐ์˜ ํ˜„์žฌ ์ฝ”ํ‹€๋ฆฐ ๋ฒ„์ „๊ณผ, classpath๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค! buildscript ..

Android 2021.05.23