[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/2020 KAKAO BLIND RECRUITMENT] ์ž๋ฌผ์‡ ์™€ ์—ด์‡ 

์ •๋‹ต์ฝ”๋“œ import kotlin.test.* import kotlin.time.* enum class Direction { `0`{ override fun x(x: Int, y: Int, size : Int) = x override fun y(x: Int, y: Int, size : Int) = y }, `90`{ override fun x(x: Int, y: Int, size : Int) = (size - 1) - y override fun y(x: Int, y: Int, size : Int) = x }, `180`{ override fun x(x: Int, y: Int, size : Int) = (size - 1) - x override fun y(x: Int, y: Int, size : Int) ..

ํ˜ธ์ถœ ํด๋ž˜์Šค์™€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ ์ถœ๋ ฅ

ํ™•์žฅํ•จ์ˆ˜ info๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ ํด๋ž˜์Šค๋ช…๊ณผ ๋ฉ”์†Œ๋“œ๋ช… ์ถœ๋ ฅ class PopcornPopper{ fun on() { info() } } fun T.info(): T { val res = this Throwable().stackTrace[1].apply { println("${generateTag()} ${generateMessage(res)}") } return this } fun T.info(msg: () -> Any): T { Throwable().stackTrace[1].apply { println("${generateTag()} ${generateMessage(msg())}") } return this } fun StackTraceElement.generateTag() = className.subst..

[๋””์ž์ธ ํŒจํ„ด] ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด

์ •์˜ ํ•œ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌ๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜. ์ธํ„ฐํŽ˜์ด์Šค ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ๊ฐ™์ด ์“ธ ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๊ฐ„๋‹จ ์˜ˆ์ œ์ฝ”๋“œ import kotlin.test.* import kotlin.time.* interface Duck { fun quack() fun fly() } class MallardDuck : Duck { override fun quack() { println("Quack") } override fun fly() { println("I'm flying") } } interface Turkey { fun gobble() fun fly() } class WildTurkey : Turkey { override fun gobble() { printl..