본문 바로가기

IT

[Flow] Flow combine 에러시 미동작 관련 내부 동작 실제 두개의 액션을 실행시켜 동작시throw 즉 에러를 강제로 던지거나 예외사항이 발생했을때downStream으로 가지 않는 이슈가 있었다.combine( action1(query), action2(query)) { action1, action2 -> action1 to action2}.collect { entity -> ...} catch를 통해 upStream에 대한 예외처리를 하면 되지만 왜 그런지 내부를 살펴보자.  실제 combine 내부의 동작을 보면  내부에 result 액션에 대한 동작을 channel을 통해 가져와 동작시키게 되어있지만,결과 액션 이후 result를 transform 하여 변경된 응답값을 뱉는 과정을 타야하지만실제 while문 내부 resultChanne..
[프로그래머스] 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=kotlin @Testfun solution() { val k: Int = 6 val tangerine: IntArray = intArrayOf() var answer: Int = 0 val map = mutableMapOf() for (i in tangerine.indices) { map[tangerine[i]] = map.getOrDefault(tangerine[i], 0) + 1 } var result = k for (i in map.values.sortedDescending()) { if(resul..
[프로그래머스] 크기가 작은 부분 문자열 https://school.programmers.co.kr/learn/courses/30/lessons/147355 문제 설명숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.제한사항1 ≤ p의 길이 ≤ 18p의 길이 ≤ t의 길이 ≤ 10,000t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않..
[프로그래머스] 달리기 경주 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다.선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요.제한사항5 ≤ players의..
[프로그래머스] 동영상 재생기 문제 설명당신은 동영상 재생기를 만들고 있습니다. 당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다. 각 기능이 수행하는 작업은 다음과 같습니다.10초 전으로 이동: 사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.10초 후로 이동: 사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.오프닝 건너뛰기: 현재 재생 위치가 오프닝 ..
[프로그래머스] 연속된 부분 두 수열의 합 문제 설명비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다.기존 수열에서 임의의 두 인덱스의 원소와 그 사이의 원소를 모두 포함하는 부분 수열이어야 합니다.부분 수열의 합은 k입니다.합이 k인 부분 수열이 여러 개인 경우 길이가 짧은 수열을 찾습니다.길이가 짧은 수열이 여러 개인 경우 앞쪽(시작 인덱스가 작은)에 나오는 수열을 찾습니다.수열을 나타내는 정수 배열 sequence와 부분 수열의 합을 나타내는 정수 k가 매개변수로 주어질 때, 위 조건을 만족하는 부분 수열의 시작 인덱스와 마지막 인덱스를 배열에 담아 return 하는 solution 함수를 완성해주세요. 이때 수열의 인덱스는 0부터 시작합니다.제한사항5 ≤ sequence의 길이 ≤ 1,000,000..
[flow] coroutine flow 문서 읽기 -2 안녕하세요 남갯입니다. https://developer.android.com/kotlin/flow/stateflow-and-sharedflow?hl=ko StateFlow 및 SharedFlow | Android 개발자 | Android Developers StateFlow 및 SharedFlow StateFlow와 SharedFlow는 흐름에서 최적으로 상태 업데이트를 내보내고 여러 소비자에게 값을 내보낼 수 있는 Flow API입니다. StateFlow StateFlow는 현재 상태와 새로운 상태 업데이트를 developer.android.com StateFlow StateFlow는 현재상태와 새로운 상태를 업데이트 수집하는 관찰 가능한 상태 홀더 flow입니다. 상태를 업데이트를 하기 위해서는 Mu..
[flow] coroutine flow 문서 읽기 -1 안녕하세요 남갯입니다. 오늘은 Coroutine flow 문서를 읽어볼 예정입니다. https://developer.android.com/kotlin/flow?hl=ko Flow란? flow는 기존 단일값만 반환하는 정지함수와는 달리 여러값을 순차적으로 보낼수 있는 유형입니다. 기존 Rx를 사용해보셨다면 비슷한 개념으로 이해할 수 있을것 같은데요. 코루틴기반으로 빌드되며, 여러값을 제공할 수 있는 데이터스트림의 개념입니다. Flow의 데이터 스트림 Flow의 데이터 스트림에는 3가지의 항목이 존재합니다. 1. 생산자 : 스트림에 추가되는 데이터를 생산합니다. 코루틴 덕분에 흐름을 비동기적으로 데이터가 생산 가능 2. 중개자(선택사항) : 스트림에 내보내는 값을 수정 가능 3. 소비자 : 스트림에서 받아온..