powerset

fun Collection.powerset(): Set = powerset(this, setOf(setOf())) private tailrec fun powerset(left: Collection, acc: Set): Set = when { left.isEmpty() -> acc else ->powerset(left.drop(1), acc + acc.map { it + left.first() }) } fun main() { val list1 = listOf(1,2,3,4,5,6,7,8) val list2 = listOf(1,2,3) val a = list1.powerset() println(a) println(a.size) val b = list2.powerset() println(b) } github...

[์•Œ๊ณ ๋ฆฌ์ฆ˜๋ฌธ์ œ/2018 KAKAO BLIND RECRUITMENT] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง

fun solution(str1: String, str2: String) : Int { val ALTHA = 65536 val regex = Regex("[a-zA-Z][a-zA-Z]") var union = 0 var intersection = 0 val str1List = str1.toList().windowed(2).mapNotNull{ list -> var newStr : String = String(list.toCharArray()).toLowerCase() if(regex.matches(newStr)) newStr else null } val str2List = str2.toList().windowed(2).mapNotNull{ list -> var newStr : String = String..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/2020 KAKAO BLIND RECRUITMENT] ๊ธฐ๋‘ฅ๊ณผ ๋ณด ์„ค์น˜

ํ˜„์žฌ์ฝ”๋“œ ์ฐธ๊ณ  sooooooyn.tistory.com/32 [2020์นด์นด์˜ค๊ณต์ฑ„] ๊ธฐ๋‘ฅ๊ณผ ๋ณด ์„ค์น˜ https://programmers.co.kr/learn/courses/30/lessons/60061 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—… sooooooyn.tistory.com class Solution { var SIZE = -1 var pillers = mutableListOf(mutableListOf()) var beams = mutableListOf(mutableListOf()) enum class BuildOrder() { PILLER_CONSTRUCT, PILLER_DESTRUCT, BEA..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/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..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฌธ์ž์—ด ํƒ์ƒ‰์šฉ ์ž๋ฃŒ๊ตฌ์กฐ Trie

๊ธฐ๋ณธํ˜• class Trie { data class TrieNode(var isEndOfWord : Boolean, val children : MutableMap) val root = TrieNode(false, mutableMapOf()) fun insert(word : String) { var currentNode = root word.forEach{ char -> val child = currentNode.children[char] ?: TrieNode(false, mutableMapOf()) currentNode.children[char] = child currentNode = child } currentNode.isEndOfWord = true } fun search(word : String) :..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/2020 KAKAO BLIND RECRUITMENT] ๊ฐ€์‚ฌ ๊ฒ€์ƒ‰

ํ•ด๊ฒฐ ์ฝ”๋“œ insertํ•  ๋•Œ ์ž…๋ ฅ๋œ ํ˜„์žฌ ๋…ธ๋“œ์—์„œ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ๋‚จ์€ ๊ธ€์ž์ˆ˜ ๋ณ„๋กœ ์ €์žฅ (countEndOfWordPerDepth) ์˜ˆ๋ฅผ ๋“ค๋ฉด, "frodo" ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด root์— countEndOfWordPerDepth[5]++ root.children['f'].countEndOfWordPerDepth[4]++ root.children['f'].children['r'].countEndOfWordPerDepth[3]++ ๊ณผ ๊ฐ™์ด ์ €์žฅํ•ด์„œ '?'๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€์˜ ๋…ธ๋“œ๋ฅผ ์ฐพ๊ณ  ํ•ด๋‹น ๋…ธ๋“œ์—์„œ '?'์˜ ๊ฐฏ์ˆ˜ ์ฆ‰ depth์— ์ €์žฅ๋œ ๋‹จ์–ด ์ˆ˜๋ฅผ returnํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ ์ •๋‹ต์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. 2์ฐจ ํ•ด๊ฒฐ์ฝ”๋“œ์—์„œ ํ•˜์œ„๋…ธ๋“œ๋ฅผ ๋Œ๋ฉฐ ์ •๋‹ต์„ ๊ณ„์‚ฐํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ import kotlin.test.*..

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/2020 KAKAO BLIND RECRUITMENT] ๊ด„ํ˜ธ ๋ณ€ํ™˜

import kotlin.test.* class Solution { fun solution(s : String) : String { return tailrecChangeBalancedBracketToRightBracket("", s, "") } private tailrec fun tailrecChangeBalancedBracketToRightBracket(prev : String, s : String, next : String) : String { return when { s == "" -> prev + "" + next s.length == 2 -> prev + "()" + next else -> { val u = getFirstBalancedMinimum(s) val v = s.replaceFirst..

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

https://programmers.co.kr/learn/courses/30/lessons/60057 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฌธ์ž์—ด ์••์ถ• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์–ดํ”ผ์น˜๋Š” ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋น„์†์‹ค ์••์ถ• ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฌธ์ž programmers.co.kr ์ด์Šˆ ์ œ์ถœ ํ…Œ์ŠคํŠธ 5๋ฒˆ๋งŒ ์‹คํŒจ ํ•ด๊ฒฐ import kotlin.test.* class Solution { fun solution(s : String) : Int { var result = Int.MAX_VALUE if(s.length == 1) result = 1 for(unitCount in 1 .. (s.count() - 1)){ val zipResult..