๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

Kotlin9

์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 4์žฅ ์ถ”์ƒํ™” ์„ค๊ณ„ ์•„์ดํ…œ 26. ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ถ”์ƒํ™” ๋ ˆ๋ฒจ์„ ํ†ต์ผํ•˜๋ผ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ์ถ”์ƒํ™”๋Š” ๋ณต์žกํ•œ ์ž๋ฃŒ, ๋ชจ๋“ˆ, ์‹œ์Šคํ…œ ๋“ฑ์œผ๋กœ๋ถ€ํ„ฐ ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋… ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ„์ถ”๋ ค๋‚ด๋Š” ๊ฒƒ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด, ์ถ”์ƒํ™”๋Š” ๋ณต์žก์„ฑ์„ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์ˆœํ•œ ๋ฐฉ์‹ ์ฝ”๋“œ์—์„œ๋Š” ์ถ”์ƒํ™”๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ ํ•จ์ˆ˜์ด๋‹ค.์ถ”์ƒํ™” ๋ ˆ๋ฒจ ํ†ต์ผ(Single Level of Abstraction, SLA) ์›์น™: ํ•จ์ˆ˜๋„ ๋†’์€ ๋ ˆ๋ฒจ๊ณผ ๋‚ฎ์€ ๋ ˆ๋ฒจ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉclass CoffeeMachine { fun makeCoffee() { boilWater() // ๋ฌผ์„ ๋“์ด๊ณ , brewCoffee() // ์ปคํ”ผ๋ฅผ ๋‚ด๋ฆฌ๊ณ , pourCoffee() // ์ปคํ”ผ๋ฅผ ๋ถ“๊ณ , pourMilk() // ์šฐ์œ ๋ฅผ ๋„ฃ๋Š”๋‹ค... 2025. 7. 12.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 3์žฅ ์žฌ์‚ฌ์šฉ์„ฑ ์•„์ดํ…œ 19. knowledge(์˜๋„์ ์ธ ์ •๋ณด)๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผํ•„์ž๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ€์žฅ ํฐ ๊ทœ์น™์€?ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฏธ ์žˆ๋˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ณ  ์žˆ๋‹ค๋ฉด, ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค.ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ค‘์š”ํ•œ knowledge ๋‘ ๊ฐ€์ง€?๋กœ์ง: ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€์™€ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€๊ณตํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๊ณ„์† ๋ณ€ํ•˜์ง€๋งŒ, ๊ณตํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•œ ๋ฒˆ ์ •์˜๋œ ํ›„ ํฌ๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.class Student { fun isPassing(): Boolean = ... fun qualifiesForScholarship(): Boolean = ... private fun calculatePointsFromPassedC.. 2025. 6. 25.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ 2์žฅ - ๊ฐ€๋…์„ฑ ์•„์ดํ…œ 11. ๊ฐ€๋…์„ฑ์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„ํ•˜๋ผ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์˜ ํด๋ฆฐ ์ฝ”๋“œ ... "๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ๋Š” 1๋ถ„ ๊ฑธ๋ฆฌ์ง€๋งŒ, ์ฝ๋Š” ๋ฐ๋Š” 10๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค."๊ฐ€๋…์„ฑ์ด๋ž€, ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.// Aif (persion != null && person.isAdult) { view.showPerson(person)} else { view.showError()}// Bperson?.takeIf { it.isAdult } ?.let(view::showPerson) ?: view.showError()A๊ฐ€ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฌ์šด๋ฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ '์ธ์ง€ ๋ถ€ํ•˜'๋ฅผ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ๊ณ  ํ•œ๋‹ค.100% ๊ณต๊ฐ์ด ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž˜ ์ตํžˆ๊ณ , ์ž˜ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ถฉ๋ถ„ํžˆ ์ฝ๊ณ .. 2025. 6. 14.
์ดํŽ™ํ‹ฐ๋ธŒ ์ฝ”ํ‹€๋ฆฐ - 1์žฅ ์•ˆ์ •์„ฑ ์•„์ดํ…œ 1. ๊ฐ€๋ณ€์„ฑ์„ ์ œํ•œํ•˜๋ผ(๊ฐ€๋Šฅํ•˜๋ฉด) var ๋ณด๋‹ค๋Š” val ์‚ฌ์šฉ(๊ฐ€๋Šฅํ•˜๋ฉด) mutable ํ”„๋กœํผํ‹ฐ๋ณด๋‹ค๋Š” immutable ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉmutable ๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜์ง€ ๋ง์ž.class Test { fun calculate(): Int { println("Cal...") return 42 } val fizz = calculate() val buzz get() = calculate()}fun main() { println(Test().buzz)}//Cal...//Cal...//42์ฝ๊ธฐ ์ „์šฉ ์ปฌ๋ ‰์…˜์„ Mutable ์ปฌ๋ ‰์…˜์œผ๋กœ ๋‹ค์šด์บ์ŠคํŒ… ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.์ฝ๊ธฐ ์ „์šฉ์—์„œ mutable๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ๋ณต์ œ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด mutable ์ปฌ๋ ‰์…˜์„ .. 2025. 6. 3.
Kotlin Collection (1) - (forEach, onEach, filter, filterNot, map, mapNotNull, flatMap, fold, reduce, sum, sumOf) ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ๋Š” ๊ต‰์žฅํžˆ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ์ž‘์—…์œผ๋กœ ํ‰์†Œ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค.ํŠนํžˆ ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ž๋ฐ”์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์šฉํ•œ ํ•จ์ˆ˜๋“ค์ด ๋งŽ์•„์„œ ๊ต‰์žฅํžˆ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ฝ”ํ‹€๋ฆฐ ์ปฌ๋ ‰์…˜์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. https://www.yes24.com/product/goods/132756874 ์ฝ”ํ‹€๋ฆฐ ์•„์นด๋ฐ๋ฏธ : ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์˜ˆ์Šค24๋” ์‰ฝ๊ฒŒ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šฐ๋Š” ๋ฐฉ๋ฒ•!์ด ์ฑ…์€ ์ฝ”ํ‹€๋ฆฐ์˜ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน์ง•์„ ์‹ฌ๋„ ์žˆ๊ฒŒ ํƒ๊ตฌํ•˜๋Š” ์™„๋ฒฝํ•œ ๊ฐ€์ด๋“œ์ด๋‹ค. ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•˜๋ฉฐ, ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ, ํ•จ์ˆ˜ ์ฐธ์กฐ, ์Šค์ฝ”www.yes24.com ๐Ÿ“Ž  Kotlin Collection1. forEach, onEach, .. 2025. 2. 9.
Kotlin for iterator ์ฝ”ํ‹€๋ฆฐ์„ ์ฒ˜์Œ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ์ž๋ฐ”์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ for๋ฌธ์„ ํ†ตํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์ž‘์„ฑํ–ˆ์—ˆ๊ธฐ์— ์กฐ๊ธˆ ์–ด์ƒ‰ํ–ˆ์—ˆ๋Š”๋ฐ์š”,์ž๋ฐ”์—์„œ์˜ for๋ฌธ์€ ๋Œ€๋ถ€๋ถ„(?) for, for-each ๋‘ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ์ ‘๊ทผํ–ˆ๋Š”๋ฐ, ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๊ต‰์žฅํžˆ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ Array์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์„œ ๋”์šฑ ์–ด์ƒ‰ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ for๋ฌธ์„ ์‚ฌ์šฉํ•  ์ผ์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ, ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. https://kotlinlang.org/docs/iterators.html#mutable-iterators Iterators | Kotlin kotlinlang.org  // 12345for (i in 1..5) { print(i)}// 1234for (i in 1.. .. (Primitives.kt) until (_.. 2025. 1. 17.
Kotlin - Scope functions (let, with, run, apply, also) ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ•ญ์ƒ ํ—ท๊ฐˆ๋ ธ๋˜ Scope functions ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๊ต‰์žฅํžˆ ์ž์ฃผ ์ ‘ํ•˜๊ณ  ์‚ฌ์šฉํ•  ๊ฐœ๋…๋“ค์ด๊ธฐ์— ์ด๋ฒˆ ๊ธฐํšŒ์— ํ™•์‹คํžˆ ์ •๋ฆฌํ•˜๊ณ , ์–ด๋–ค ์ƒํ™ฉ์— ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ• ์ง€ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. Scope functions๊ธฐ๋ณธ์ ์œผ๋กœ Scope functions๋Š”, ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ํŠน์ • ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.์ผ๋ถ€๋Š” ๋žŒ๋‹ค ํ‘œํ˜„์‹์ด ์ œ๊ณต๋˜๊ณ , ๊ฐ์ฒด์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ์ฒด์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (this, it) ์ฝ”ํ‹€๋ฆฐ์˜ Scope functions์—๋Š” let, run, with, apply, also 5๊ฐ€์ง€์˜ ํ•จ์ˆ˜๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๋‘ ์ฝ”๋“œ๋Š” ๋™์ผํ•œ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, let ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ.. 2024. 12. 15.
[Kotlin] Slack API๋กœ ์Šฌ๋ž™ ์ฑ„๋„์— Message ๋ฐœ์†กํ•˜๊ธฐ ๐Ÿ“Ž Slack API๋กœ ์Šฌ๋ž™ ์ฑ„๋„์— Message ๋ณด๋‚ด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์Šฌ๋ž™์—์„œ ์ œ๊ณต๋˜๋Š” API๋ฅผ ํ†ตํ•ด Java ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Slack ์ฑ„๋„์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์šด์˜ํ•˜๋‹ค๋ณด๋ฉด ํŠน์ • ๋ฌธ์ œ(๋กœ๊ทธ, ์—๋Ÿฌ, ๋ฉ”๋ชจ๋ฆฌ, ๋ฐฐ์น˜ ์‹คํŒจ ๋“ฑ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์žฅ์• ์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ๋ฆผ์„ ๋ฐ›์•„ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ์š”, ์ด๋Ÿฌํ•œ ์•Œ๋ฆผ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์Šฌ๋ž™์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์Šฌ๋ž™์˜ ๊ฒฝ์šฐ ๋งŽ์€ ๊ธฐ์—…์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๋˜ํ•œ ๊ต‰์žฅํžˆ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”, ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ๋ฌด๊ถ๋ฌด์ง„ํ•˜๊ฒŒ ์ปค์Šคํ…€์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ๋Š” ์Šฌ๋ž™์„ ๋‹ค์šด๋ฐ›๊ฑฐ๋‚˜ ํšŒ์›๊ฐ€์ž…ํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์„ ์ œ์™ธํ•œ ์Šฌ๋ž™์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœ์†กํ•˜๊ธฐ ์œ„ํ•œ.. 2022. 3. 27.
[Kotlin] - Class(ํด๋ž˜์Šค) ๐Ÿ“Ž Kotlin - Class(ํด๋ž˜์Šค) ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ฝ”ํ‹€๋ฆฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”ํ‹€๋ฆฐ์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค๋งŒ.. ์•„์ง ์ฝ”ํ‹€๋ฆฐ์€ ๋‚ฏ์„ค๊ธฐ๋งŒ ํ•˜๋„ค์š”.. for๋ฌธ, ๋ฐฐ์—ด ์ƒ์„ฑ, ์ƒ์„ฑ์ž, open ํ‚ค์›Œ๋“œ, ๋ถˆ๋ณ€, ?, !, !! ๋“ฑ๋“ฑ ... ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ”์™€๋Š” ๋ฌธ๋ฒ•์ ์œผ๋กœ ๋‹ค๋ฅธ๋ถ€๋ถ„์ด ๊ฝค(?) ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๊ธฐ๊ฐ„์— ์นœํ•ด์ง€๊ธฐ๊ฐ€ ํž˜๋“  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด ์ฝ”ํ‹€๋ฆฐ์€ ์ผ์ฃผ์ผ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.. ๋ผ๋Š” ๊ธ€์„ ๋ณธ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ์š”, ์ €๋Š” ์•„์ง ์ž๋ฐ”์— ์ต์ˆ™ํ•˜์ง€๊ฐ€ ์•Š๋‚˜๋ด…๋‹ˆ๋‹ค ๐Ÿ˜ญ ์•ž์œผ๋กœ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ธธ๋•Œ๋งˆ๋‹ค ํ‹ˆํ‹ˆํžˆ ์ฝ”ํ‹€๋ฆฐ์—๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์— ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ์˜ ํด๋ž˜์Šค๋Š” ์ƒ์„ฑ์ž๋‚˜ open ํ‚ค์›Œ๋“œ, comp.. 2021. 10. 17.
๋ฐ˜์‘ํ˜•