본문 바로가기

IT

[드로이드나이츠] 뱅크샐러드 코틀린던전 2, 3번문제 안녕하세요 남갯입니다 오늘은 드로이드나이츠에서 나온 뱅크샐러드의 코틀린던전 2번 3번문제를 풀어보려합니다. 2번문제는 되게 어려웠습니다.실제로 확인하는데는 엄청 어려웠습니다. listof일단 listof에 대해 확인해보면listof는 emptyList 혹은 elements.asList를 통해 결과값을 반환합니다. List타입을 반환하게 되죠asListemptyList위의 두 반환타입을 보면 List타입을 반환하게 되는데 즉 List라는 immutable한 타입을 반환하게 됩니다. arratListOf반환타입이 ArrayList를 반환하게 됩니다. List, MutableList , ArrayList 살펴보기ListMutableListArratListList는 Collection을 상속받았고 Mutable..
[드로이드나이츠] 뱅크샐러드 코틀린던전 1번문제 안녕하세요 남갯입니다 오늘은 드로이드나이트에서 코틀린던젼으로 문제를 냈던 레이니스트(뱅크샐러드)의 문제를 포스팅해보려합니다. 1번문제 첫번째 문제는 1 ~ 6의 숫자를 가진 리스트에 함수를 넣어 큰 순서대로 나열하는 문제입니다. SUMval sum = numbers.filter { num -> num % 2 == 0 }.sum() filter는 각각의 숫자를 넣어서 num%2 ==0을 만족하는 수를 출력해주는 함수입니다.즉 [1,2,3,4,5,6} 은 짝수만 남게됩니다. {2,4,6}그후 sum()은 합을 구하는 함수입니다.2 + 4 + 6 = 12가 나오게됩니다.SUM = 12 FOLDval fold = numbers.fold(1) { sum, num -> sum + num } fold는 초기값을 넣고..
[kotlin] 제너릭 변성(variance) 정리 안녕하세요 남갯입니다 오늘은 제너릭 타입에대해 정리해보려고합니다 SubType 이란? subType이란 어떤 class가 다른클래스를 상속받은것을 의미한다. 즉 타입 A가 필요한 곳에 타입 B 값을 넣어도 문제가 없다면 B는 A의 하위타입인 것이다. 예를들어 open class A() { val x = 0 val y = 1 } class B : A(){ val z = 2 } 와 같이 B는 A를 상속받았으므로 A의 subType이다. var a = A() var b = B() a = b는 가능하지만 var a = A() var b = B() b = a는 mismatch가 난다. 즉 A타입이 필요한곳에 B를 넣었는데 문제가 없으므로 B 는 A의 SubType인것이다. 무공변성(invariance) 제너릭타입..
[안드로이드] AlarmManager With Notification Example (알람매니저를 이용하여 푸쉬생성 예제) 안녕하세요 YTS 입니다. 오늘은 알람매니저(AlarmManager)를 이용하여 푸쉬(Notification)를 생성하는 예저를 다루어볼까합니다. 추가적으로 JobScheduler를 이용하여 백그라운드에서도 반응하도록 예제를 제작하였습니다. 우선적으로 사전지식이 필요한 JobScheduler는 안드로이드 API LEVEL 21부터 등장하였고, Android에서는 기존 무분별한 백그라운드 서비스를 제한하기위하여 JobScheduler로 대체를 하고있습니다. 저는 JobScheduler를 보다 쉽게 사용하기위해서 FireBase Jobdispatcher를 이용하였습니다. 보다 자세한 정보는 https://github.com/firebase/firebase-jobdispatcher-android 에서 확인할 ..
[안드로이드]Android Bottom App Bar 사용하기 안녕하세요 남갯입니다 오늘은 안드로이드 Material Components 2.0 중 하나로 소개된 BottomAppBar 에 대해 소개해보려고합니다. -Bottom App Bar 란한손으로 사용이 용이하게끔 네비게이션 메뉴와 다양한 옵션들을 하단으로 내린 스타일을 말합니다. 네비게이션 바와 플로팅 버튼이 밑에 존재합니다. - Bottom App Bar를 구현하기위한 사전조건 Bottom App Bar를 사용하기 위해선 두가지의 조건중에 하나를 만족시켜야합니다 1. Manifest에 Widget.MaterialComponents의 스타일을 만들어 적용 2. Bottom App Bar 내에 아래의 스타일을 적용 style=”@style/Widget.MaterialComponents.BottomAppBar”..
[RxJava, RxKotlin,RxAndroid] concat , merge, zip 알아보기 안녕하세요 남갯입니다 오늘은 concat 과 merge 와 zip를 알아보도록 하겠습니다. -concat concat은 두개의 Observable을 합쳐 첫번째 Observable을 발행 한 뒤 두번째 Observable을 발행합니다. 위쪽의 Timestamp와 아래쪽의 Timestamp는 동일한 시기에 각각 데이터를 발행했지만 concat 이후에 보면 위쪽 데이터 이후에 아래쪽 데이터가 발행되는것을 볼 수 있습니다. 즉 요즘은 해당 api를 부르기위해 auth를 요청받는 api가 있는데, 그때 이용하게 되면 좋을것 같습니다. 해당 세션이 유효한지 판단 한 후원하는 api를 요청할 때 이용하면 좋을것 같습니다. val test1 = Observable.just("1", "2", "3").delay(2, ..
[코틀린] Higher order function 정리 안녕하세요 남갯입니다 오늘은 코틀린의 higher order function에 대해 포스팅해보려고합니다. - higher order function 이란? higher order function은 간단하게 두개를 만족하는 함수를 일컫습니다. 1. 함수에 파라미터로 전달하는 함수2. 함수를 반환(리턴)하는 함수 higher order function이 되기위해선 일급객체(first class citizen)가 되어야합니다. - 일급객체(firstclass citiezen) 이란? 일급객체란 아래의 조건을 만족하는것을 말합니다. 1. 변수나 데이터 할당 할 수 있어야한다. val test1: () -> Unit = { println("firstCitizen") } // firstCitizen 2. 객체의 인..
[fold 함수] fold 함수 알아보기 안녕하세요 남갯입니다 오늘은 fold 함수에 대해 간단히 포스팅 해보려고합니다. fold 함수는 inline fun Array.fold( initial: R, operation: (acc: R, T) -> R ): R ........ Accumulates value starting with initial value and applying operation from left to right to current accumulator value and each element. -출처 https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/fold.html 초기값을 설정해주고 왼쪽부터 오른쪽까지 현재의 계산값에 각각을 적용하는 함수입니다. val sum..