Tech/Algorithm
-
유효한 괄호 문자열 확인Tech/Algorithm 2023. 10. 29. 13:12
fun isValidParentheses(s: String): Boolean { val stack = ArrayDeque() for (char in s) { when (char) { '(', '[', '{' -> stack.addLast(char) ')' -> if (stack.isEmpty() || stack.removeLast() != '(') return false ']' -> if (stack.isEmpty() || stack.removeLast() != '[') return false '}' -> if (stack.isEmpty() || stack.removeLast() != '{') return false } } return stack.isEmpty() } fun main() { println..
-
최빈 단어 찾기Tech/Algorithm 2023. 10. 29. 13:12
fun mostFrequentWord(s: String): Pair? { val words = s.split(' ') val frequencyMap = words.groupingBy { it }.eachCount() return frequencyMap.maxByOrNull { it.value } } fun main() { val (word, frequency) = mostFrequentWord("this is a sample program and it is a sample") ?: Pair("", 0) println("$word: $frequency") // "sample: 2" }
-
-
문자열 압축Tech/Algorithm 2023. 10. 29. 12:55
fun compressString(s: String): String { if (s.isEmpty()) return "" val compressed = StringBuilder() var count = 1 for (i in 1 until s.length) { if (s[i] == s[i - 1]) { count++ } else { compressed.append(s[i - 1]).append(count) count = 1 } } compressed.append(s.last()).append(count) return compressed.toString() } fun main() { println(compressString("aaabbbbccdddda")) // "a3b4c2d4a1" }
-
가장 긴 공통 접두사 찾기Tech/Algorithm 2023. 10. 29. 12:54
fun longestCommonPrefix(strs: List): String { if (strs.isEmpty()) return "" val prefix = StringBuilder() strs.reduce { acc, s -> acc.commonPrefixWith(s) }.forEach { prefix.append(it) } return prefix.toString() } fun main() { println(longestCommonPrefix(listOf("flower", "flow", "flight"))) // "fl" }