일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- coroutinecontext
- withContext
- ServerDrivenUI
- coldStream
- java
- collectLatest
- Flow
- 안드로이드
- SDUI
- ShapeableImageView
- 백준
- TOSS 과제
- KAKAO
- conflate
- app-distribution
- Android
- Product Flavor
- monotone stack
- 백준2309
- google play console
- flowon
- coroutine
- Next Challenge
- 릴리즈 키해시
- hotStream
- cancellationException
- Algorithm
- coroutinescope
- Kotlin
- Advanced LCA
- Today
- Total
목록전체 글 (39)
루피도 코딩한다
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42890 풀이 흐름 후보 키 목록 뽑기 -> 비트 연산을 활용한 조합구하기 최소성 검사 -> 비트 연산 활용 유일성 검사 -> 자료구조 Set 활용 후보키 에 속하는 속성을 String으로 이어붙인 뒤 set에 넣어주기 ex) 후보키가 이름, 전공 이렇게 두가지가 있다면 아래와 같이 처리함 val hashSet = {"ryanmusic, "apeachmath" .. } 조합에 관해 느낀점 c++에서는 조합을 구할 때 algorithm STL에서 지원해주는 permutation 함수를 활용해 편리하게 구현했었다. 그런데 kotlin에서는 조합 합수의 경우 재귀함수로 구성하는 등 그 과정이 좀 복잡..
문제 : k진수에서 소수 구하기 배운 점 및 필요한 개념 정리 10진수 n을 k진수로 변환 : n.toString(k) 원래는 이거 직접 구현했었음! 마무리 reversed 잊지말기 private fun convert10ToK(n: Int, k: Int): String { var temp = n var str = "" while (temp >= 0) { str += temp % k temp /= k if (temp == 0) break } return str.reversed() } n이 소수(prime)인지 판별 :n을 2이상 sqrt(n) ‘이하’의 수로 나눠본다 이에 대한 인사이트를 주는 글 자매품으로 에라토스테네스의 체가 있다. 아래 로직을 보면 너무 당연하다 [예제] 26이하의 자연수 중 소수가 ..
Thanks to Kotlin's functional programming features, we can efficiently solve algorithmic problems compared to using traditional languages. In this post, we'll explore how to transform a list into a map under specific conditions in just one line using withIndex() and associate(). 1. Basic Notion withIndex() withIndex() is an extension function for collections in Kotlin. It enables iterati..
접근법 1) 경우의 수, 팩토리얼 활용하기 n의 값을 알때 n을 (1*2)블럭 몇개와 (2 * 1)블럭 몇개로 채울것인가? n/2를 해서 (2*1)블럭을 k개, k-1, ... 1, 0개로 채우는 경우를 생각해볼 수 있다 세로블럭 a개, 가로블럭 b개를 가지게되는 경우의 경우의 수는 이항계수를 활용할 수 있다. val vertical = a val horizontal = b(a + b) ! / a!*b! == aCb 그런데 이럴 경우 n!의 결과값 까지 모두 구해야한다는 단점이 있다. 나머지 정리이야기를 해보자. A+B를 m으로 나눈 나머지를 구하고자 할때, A를 m으로 나눴을때의 나머지와, B를 m으로 나눈 나머지를 더하면 A+B를 미리 더한값을 m으로 나눴을때의 나머지와 동일한 값을 도출할 수 있다...
본 포스팅은 책 '파이썬 알고리즘 인터뷰'를 공부하며 정리한 내용입니다. 아래 내용은 ch6의 내용을 참고하였습니다. 그렇다면.. 파이썬 알고리즘 레츠고~ Char char.isalnum() : 영문자, 숫자 여부 판별 char.lower() : 소문자 변환 char1 != char2 : 대소문자 구분함 ('a' == 'A' 의 값은 false) String char처럼 str.lower() 사용 가능 Slicing -> 내부적으로 c로 구현돼있어서 빠름 my_string = "Hello, World!" # Basic slicing substring1 = my_string[7:12] # Extracts "World" # Omitting start or stop ..
1. 국룰 try/catch 아래 예시처럼 emitter에서 발생한 Excpetion, 그리고 collecter 에서 발생한 Excpetion 둘 다 try/Catch를 통해 잡을 수 있다. fun exceptionExample(): Flow = flow { for (i in 1..3) { println("Emitting $i") emit(i) // emit next value } }.map { value -> check(value println(value) check(value.contains("1")) { "Collected $value" } ✅ } } catch (e: Throwable) { println("Caught $e") } } 2. Exception transparency (함수형으로 ca..
1. Composing multiple flows (여러개 flow 결합하기) collect 이전에 연산자가 위치하게 된다 Zip : 두개의 flow를 순차적으로 결합 val flow = flowOf(1, 2, 3).onEach { delay(10) } val flow2 = flowOf("a", "b", "c", "d").onEach { delay(15) } flow.zip(flow2) { i, s -> i.toString() + s }.collect { println(it) // Will print "1a 2b 3c" } Combine : 방출되는게 생길때마다 두개의 flow (combine 블록 내부에서 emit하려고 하면 에러남) val flow = flowOf(1, 2).onEach { delay..