전체 글 231

1이 될때까지 최소 연산 횟수

n과 k 라는 자연수가 주어진다고 하면 아래 두가지 연산 중 하나씩 진행하여 n이 1이 되도록 하는데 연산 횟수를 최소화 하는 알고리즘을 작성하라. 1. n 에서 1을 빼기 2. n 에서 k를 나누기 이런 문제가 있다고 하자. 이 문제는 그리디 알고리즘의 유명한 문제다. 해설을 보기전 나의 경우는 n = 25 k = 5 count = 0 while 1 : if n%k ==0: n=n/k count+=1 else : count+=1 n= n-1 if n==1 : break print(count) 이런 식으로 풀었다. 이 방법도 틀린 방법은 아니지만 주어지는 숫자의 범위가 커지면 문제가 생길 수 있다. 그래서 사용하는 테크닉이 해설 코드에 있었다. n = 17 k = 4 count = 0 while 1 : ..

알고리즘 2021.08.21

Drawable Shape 코드로 색상 동적 변경

Drawable Shape를 배경 등.. 으로 사용할때 색상을 동적으로 변경하는 방법 입니다. TextView의 배경을 둥글게 하기 위해서 shape로 배경을 깔아주고 배경 색상은 아래와 같이 지정 해줍니다. GradientDrawable bgShape = (GradientDrawable) textView.getBackground(); bgShape.setColor(getResources().getColor(R.color.colorPrimary)); 코틀린에서는 var bgShape : GradientDrawable = get_auth_text_bt.background as GradientDrawable bgShape.setColor(resources.getColor(black)) 이렇게 사용합니다.

Android 2021.07.31

안드로이드 Dialog 만들기 (kotiln)

앱을 만들다보면 DIalog를 만들때다 종종 있다. 그럴때 어떻게 해야하는지 코드로 알아보자. 아래는 실제 Dialog 코드다. class MyDialog(context: Context, layoutId: Int) : Dialog(context) { var detector: GestureDetector? = null // 다이얼로그가 나와있을때 손가락 제스쳐에 따른 행동을 구현하기 위함 protected var mContext: Context private val iv: ImageView private val text: String companion object { private const val SWIPE_MIN_DISTANCE = 120 // 제스쳐에 사용될 상수 private const val SW..

Android 2021.07.30

Nest.js 시작하기

Java 로 백엔드를 만들어본 사람이라면 spring나 spring-boot 의 존재에 대해서 많이들 알거라고 생각한다. node.js 에도 express 라는 멋진것이 존재하지만 spring-boot 만큼의 편리함은 사실 없다고 느꼈다. 백엔드를 주로 하는것도 아니니까 그냥 그렇게만 생각하고 있던 찰나 우연하게 nest.js 라는것을 알게 됐고 눈에 들어온 문구가 있었다. "Java에 spring 이 있다면 node.js 에는 nest.js가 있다." 예전에 spring 으로 앱 서버를 만들어봤지만 확실히 spring 은 이것저것 설정해줄거나 건드려줄게 많았는데 보다 간편한 node에 그런 프레임워크가 있다니? 라는 생각으로 찾아보며 공부해봤다. 생각했던거 이상으로 spring 을 사용해본 사람이라면 ..

오랜만의 블로그

간만에 블로그 글을 쓴다. 한때는 1일 1포스팅을 꿈꿨지만 쉽지는 않은거 같다 ㅋㅋ.. 개인 개발은 꾸준히 하고 있다. 이번에도 어김없이 MVVM + RXjava 를 중점으로 개발하고 있다. MVVM은 이제 거의 익숙해진거 같다. RX는 최근에 좀 제대로 이해하기 시작했는데 솔직히 기능이 너무 많아서 이걸 다 적용할 일이 있을까? 싶긴하다. 물론 몇몇 기능은 매우 유용한듯? 아마 다음 포스팅은 새로한 프로젝트에 대해 간단하게 연재하는 글이 될거 같다.

잡담 2021.07.10

RxJava - Observable과 Observer 의 차이

둘다 자주 나오지만 이름도 비슷한게 정확한 차이점에 대해 궁금해졌다. 그래서 여기저기 찾아다니며 알아봤는데 차이점은 아래와 같다. Observable은 int, String 등등 여러 형태의 데이터를 관찰할 수 있는 즉 Observer 가 사용할 수 있는 형태로 바꾸는 역할을 한다. Observer 는 Observable 로 만들어진 데이터를 전달받고 그 데이터로 특정 행동을 취하는 역할을 한다. 아래 그림을 보면 더 이해하기 편하다. Observable observable = Observable .just("test1", "test2") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); observable.subscrib..

RxJava - Observable을 제외한 다른 생산자들

전 포스팅에서는 Observable에 대해서 알아봤다. 기본적인 생산자였는데 Observable 0개에서 n개의 데이터를 전달하는 생산자다. 기본적인 생산자로 단건(0 or 1)이 아니면 대부분 Observable을 쓴다. observer 방식으로 consumer 등록시 Observer를 구현해 전달한다. consumer 방식을 사용할 시 onNext, onComplete, onError와 onSubscribe가 있다. val observer = Observable.just(11, 12, 13) .map { if (it == 12) throw IllegalStateException() // 12에 에러 else it } observer.subscribe( { println("onNext $it") }, ..