본문 바로가기

kotlin

문자열의 모든 순열찾기 fun getPermutations(s: String): List { if (s.length 더보기
문자열 압축 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" } 더보기
가장 긴 공통 접두사 찾기 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" } 더보기
회문확인 fun isPalindrome(s: String): Boolean { return s == s.reversed() } fun main() { println(isPalindrome("level")) // true } 더보기
애너그램 확인 fun isAnagram(s1: String, s2: String): Boolean { return s1.toList().sorted() == s2.toList().sorted() } fun main() { println(isAnagram("listen", "silent")) // true } 더보기
문자열 뒤집기 fun reverseString(s: String): String { return s.reversed() } fun main() { println(reverseString("Hello World")) // "dlroW olleH" } 더보기
스프링 클라우드 스트림과 카프카를 활용한 마이크로서비스 이벤트 처리 마이크로서비스 아키텍처에서 이벤트 기반 통신은 서비스 간의 느슨한 결합을 지원하며, 확장성과 유연성을 향상시킵니다. 이 포스팅에서는 스프링 클라우드 스트림(Spring Cloud Stream)과 Apache Kafka를 사용하여 마이크로서비스 간의 이벤트 기반 통신을 구현하는 방법을 소개합니다. 스프링 클라우드 스트림이란? 스프링 클라우드 스트림은 메시지 기반 마이크로서비스를 구축하기 위한 프레임워크입니다. 개발자가 특정 메시지 브로커의 API에 직접 의존하지 않고, 메시지 기반의 커뮤니케이션을 손쉽게 구현할 수 있게 해줍니다. 스프링 클라우드 스트림은 메시지 브로커를 추상화하는 바인더(binder)라는 개념을 도입하여, Kafka, RabbitMQ와 같은 다양한 메시지 브로커를 동일한 프로그래밍 모델로.. 더보기
두 개의 스택을 사용하여 큐 구현하기 스택과 큐의 기본 개념 스택 (Stack) 스택은 데이터를 후입선출(LIFO: Last-In-First-Out) 방식으로 저장하는 자료 구조입니다. 즉, 가장 나중에 들어간 데이터가 가장 먼저 나오게 됩니다. 큐 (Queue) 반면에 큐는 선입선출(FIFO: First-In-First-Out) 방식으로 데이터를 저장합니다. 처음 들어간 데이터가 가장 먼저 나오게 되죠. 스택 두 개로 큐를 만들기 스택 두 개를 사용하여 큐의 동작을 구현할 수 있습니다. 기본 알고리즘은 다음과 같습니다: Enqueue (데이터 추가): 첫 번째 스택을 사용하여 데이터를 추가합니다. Dequeue (데이터 제거): 만약 두 번째 스택이 비어 있다면, 첫 번째 스택의 모든 요소를 두 번째 스택으로 옮긴 후, 두 번째 스택에서 .. 더보기