kotlin 20

IntelliJ์—์„œ JUnit4 ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์„ค์ • ๋ฐ ๋ฐฉ๋ฒ•

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ธฐ๋Šฅ ์ฝ”๋“œ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์‹œ๊ฐ„์— ์ซ“๊ธฐ๋‹ค ๋ณด๋‹ˆ main ํ•จ์ˆ˜์—์„œ ์ง์ ‘ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค . . ๐Ÿ™„ ์ด๋ฒˆ ๊ฒจ์šธํŠน๊ฐ•์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์งœ๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ๋ณด๋ ค๊ณ  ํ•œ๋‹ค!(์•„๋‹ˆ๋ฉด, ์„ ์ƒ๋‹˜์ด ๋จธ์ง€๋ฅผ ์•ˆํ•ด์ฃผ์‹ ๋‹ค . . ๐Ÿ˜…) Kotlin ํ…Œ์ŠคํŠธ ๋„๊ตฌJUnit4: ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด ์˜จ ๋„๊ตฌJUnit5: ์ตœ์‹  ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ฐœ์„ ๋œ ๋ฒ„์ „Kotest: Kotlin ์นœํ™”์ ์ธ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์•ˆ๋“œ๋กœ์ด๋“œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” JUnit4๊ฐ€ ์˜ค๋žœ ๊ธฐ๊ฐ„ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ ์žก๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” JUnit4๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.JUnit4 ์ถ”๊ฐ€ ํ•˜๊ธฐ2024๋…„ 12์›” ํ˜„์žฌ ๊ธฐ์ค€์œผ๋กœ K..

Kotlin 2024.12.22

์ฝ”ํ‹€๋ฆฐ Kotlin 2์ฐจ์› ๋ฐฐ์—ด ์ถœ๋ ฅํ•˜๊ธฐ

์ฝ”ํ‹€๋ฆฐ Kotlin 2์ฐจ์› ๋ฐฐ์—ด ์ถœ๋ ฅํ•˜๊ธฐ1. 2์ฐจ์› ๋ฐฐ์—ด์„ ์„ ์–ธval array = arrayOf( intArrayOf(1, 2, 3), intArrayOf(4, 5, 6), intArrayOf(7, 8, 9)) 2. 2์ฐจ์› ๋ฐฐ์—ด ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ ๊ตฌํ˜„private fun printArray(array: Array) { val sb = StringBuilder() for (row in array) { for (element in row) { sb.append(element).append(" ") } sb.append("\n") } println(sb.toString())} 3. ์ถœ๋ ฅ ํ™•์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€๋ฉด์„œ์ข…์ข… ๋ถˆํŽธ..

Kotlin 2024.07.24

Kotlin ์ฝ”ํ‹€๋ฆฐ ๋ฐฑ์ค€ 25344 ํ–‰์„ฑ ์ •๋ ฌ

๋ฌธ์ œํ–‰์„ฑ ์ •๋ ฌ์€ ํ–‰์„ฑ๋“ค์ด ์ผ์ง์„ ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ํ˜„์ƒ์ด๋‹ค. ์ตœ๊ทผ ์ง€๊ตฌ์—์„œ๋„ 18๋…„ ๋งŒ์— ํ–‰์„ฑ ์ •๋ ฌ์„ ๊ด€์ธกํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.ํ‰ํ–‰์„ธ๊ณ„์˜ ์ค€์„œ๊ฐ€ ์‚ด๊ณ  ์žˆ๋Š” ์ง€๊ตฌ์—์„œ๋Š” $N$๊ฐœ์˜ ํ–‰์„ฑ์„ ๊ด€์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค€์„œ๋Š” ์–ผ๋งˆ๋‚˜ ๊ธฐ๋‹ค๋ ค์•ผ $N$๊ฐœ์˜ ํ–‰์„ฑ์ด ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋˜๋Š” ์ˆœ๊ฐ„์„ ๋ณผ ์ˆ˜ ์žˆ์„์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.ํ•˜๋Š˜์„ ์—ด์‹ฌํžˆ ๊ด€์ฐฐํ•œ ๊ฒฐ๊ณผ, ์ค€์„œ๋Š” ๋‹ค์Œ ์‚ฌ์‹ค๋“ค์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.โ€Š๐‘๊ฐœ์˜ ํ–‰์„ฑ์ด ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋˜๋Š” ์ˆœ๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๋Š” $10^{9}$์ดˆ ์ดํ•˜์ด๋‹ค.1, 2, 3๋ฒˆ์งธ ํ–‰์„ฑ์€ $T_1$์ดˆ๋งˆ๋‹ค ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ๋‹ค.โ€Š2, 3, 4๋ฒˆ์งธ ํ–‰์„ฑ์€ $T_2$์ดˆ๋งˆ๋‹ค ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ๋‹ค....$N-2, N-1, N$๋ฒˆ์งธ ํ–‰์„ฑ์€ $T_{N-2}$์ดˆ๋งˆ๋‹ค ์ผ๋ ฌ๋กœ ๋‚˜์—ด๋œ๋‹ค.์ค€์„œ๋ฅผ ์œ„ํ•ด ํ–‰์„ฑ ์ •๋ ฌ์˜ ์ฃผ๊ธฐ๋ฅผ ๊ตฌํ•ด์ฃผ์ž. ์ž…๋ ฅ์ฒซ์งธ ์ค„์— ์ •๋ ฌ๋˜..

Algorithm 2024.07.15

์ฝ”ํ‹€๋ฆฐ Kotlin java.util.ConcurrentModificationException ์—๋Ÿฌ

๊ทธ๋ ‡๋‹ค. ์ด ๊ธ€์€ ๋ฐฉ๊ธˆ ์ฝ”ํ…Œ์—์„œ ์ € ์—๋Ÿฌ๋ฅผ ๋ณด๊ณ  ์ฒ˜์Œ ๋ณด๋Š” ์—๋Ÿฌ๋ผ ๋‹นํ™ฉํ–ˆ๊ณ , ๋กœ์ง์€ ๋‹ค ์งฐ๋Š”๋ฐ ์ €๊ฒƒ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ๋ชป ํ’€์–ด์„œ ๋ถ„๋…ธ์— ์ฐจ์„œ ์“ฐ๋Š” ๊ธ€์ด๋‹ค.  java.util.ConcurrentModificationException ์ด๋ž€^^!!์ฃผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋™์‹œ์— ์ˆ˜์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๋‹ค. ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ์— list๋ฅผ for๋ฌธ์œผ๋กœ ๋Œ๋ฆฌ๋ฉด์„œ, tempList = list๋ฅผ ์„ ์–ธํ–ˆ๋Š”๋ฐ,์ด๊ฒƒ์ด ๋ฌธ์ œ์˜€๋‹ค..๐Ÿ˜ต ์ดํ•ด๊ฐ€ ์‰ฝ๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ณด์ž! list ๋งจ ์•ž์˜ element๋ฅผ ๋งจ๋’ค๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋กœ์ง์ด๋‹ค.fun solution(list: MutableList) { for ((i, element) in list.withIndex()) { val tempList = list ..

Kotlin 2024.07.11

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 = 0private var answer = 0private fun getClockNum(num: Int): Int { ..

Algorithm 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 = 0private fun solution() { for (i in 1..

Algorithm 2022.11.17