일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observable
- 파이썬
- 안드로이드 디자인패턴
- 디자인패턴
- Android
- 공격적 프로그래밍
- Room
- 자료구조
- 유닛테스트
- 코틀린
- UnitTest
- 코딩테스트
- inffer
- ViewModel
- dagger2
- Kotlin
- 안정성
- MVVM
- 테스트의 장점
- mock
- Python
- 깃
- git
- rxjava
- 단위테스트
- 추론타입
- Di
- Jetpack
- 안드로이드
- 제한함수
- Today
- Total
목록전체 글 (62)
세상을 바꾸는 개발자
: 난이도 하 행복 왕국의 왕실 정원은 체스판과 같은 8 × 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다 나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있다 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 이처럼 8 × 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하라. 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는 a부터 h로..
: 난이도 하 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 첫째 줄에 정수 N이 입력된다. (0
: 난이도 하 [문제] 여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여있다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀있다. 각 문자의 의미는 다음과 같다. L : 왼쪽으로 한 칸 이동 R : 오른쪽으로 한 칸 이동 U : 위로 한 칸 이동 D : 아래로 한 칸 이동 [입력 조건] 첫째 줄에 공간의 크기를 나타내는 N이 ..
: 난이도 하 [문제] 어떠한 수 N이 1이 될 때까지 다음 두 과정 중 하나를 반복해서 수행한다. 두 과정은 아래와 같다. N에서 1을 뺀다. N을 K로 나눈다. (단, 나눌 수 있는 경우만 해당된다.) 예를 들어서 N이 17이고, K가 4라면 처음에는 나눌 수 없으므로 1을 뺀다. 그 뒤 16이 되면 K값 4로 나눌 수 있기 때문에 나누어준다. 그러면 4가 되는데 또 K값으로 나눠줄 수 있기 때문에 나눠주면 1 이므로 종료된다. 이때 결과는 총 3번 과정을 수행했으므로 3을 출력하면 된다. [입력 조건] 입력은 한 줄로 N과 K가 공백으로 구분되어 주어진다. 이때 조건은 N(2
: 난이도 하 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 카드들이 N x M 형태로 놓여 있을 때, 게임의 룰에 맞게 카드를 뽑는 프로그..
안녕하세요~ 헬창코딩입니다. 요즘은 코딩 테스트를 안 보는 대기업이 거의 없죠 저도 미래를 위에 코딩 테스트 공부를 해보려고 합니다~ 처음에 어떤 언어를 사용해볼까 생각하다가 많이 사용하는 언어 말고 새로운 언어를 사용해보자고 생각을 해서 파이썬을 사용하게 되었습니다. 또 코딩 테스트에서 파이썬으로 하면 코드도 간결해지고 구현하기도 편하다고 하네요 그래서 많은 요즘 사람들이 파이썬으로 코딩 테스트를 준비한다고 합니다.~ 그리고 제가 참고한 책은 나동빈 님이 저자인 이것이 코딩 테스트다 with 파이썬이라는 책으로 공부를 시작했습니다. 오늘부터 한 문제씩 제가 풀이 한 방식으로 기록을 할 생각입니다.(틀린 부분이 있을 수 있으니 틀리면 말씀해주세요 ㅠ) 자 그럼 바로 시작할게요~ : ..
안녕하세요~ 헬창코딩입니다. 오늘은 publish 연산자와 connect 연산자에 대해서 알아보도록 하겠습니다~ ConnectableObservable은 Hot Observable을 구현할 수 있도록 도와주는 타입으로 아무 Observable 타입이나 publish 연산자를 이용하여 간단히 ConnectableObservable로 변환할 수 있습니다. (Hot Observable은 저번 시간 포스트를 참고해주세요) ConnectableObservable은 구독을 요청해도 Observable은 데이터를 발행하지 않습니다. connect() 연산자를 호출할 때 비로소 아이템을 발행하기 시작합니다. ConnectableObservable src = Observable.interval(1, TimeUnit.SE..
안녕하세요~ 헬창코딩입니다. 오늘은 Cold Observable과 Hot Observable의 차이에 대해서 알아볼까 합니다. Observable을 구현하는 방식에서 Observable과 Observer 사이에 미묘한 동작 차이가 있습니다. 이를 Cold Observable 과 Hot Observable이라고 부릅니다. Cold Observable은 지금까지 앞에서 다뤄 왔던 예제들처럼 Observable에 구독을 요청하면 아이템을 발행하기 시작합니다. 아이템은 처음부터 끝까지 발행이 되고, 임의로 종료하지 않는 이상 여러 번 요청에도 처음부터 끝까지 발행하는 것을 보장합니다. interval 연산자를 이용하여 1초마다 아이템을 발행하는 Cold Observable을 살펴보겠습니다. Observable ..
안녕하세요 ~ 헬창코딩입니다. 오늘은 Rxjava의 Observable의 형태중 Completable에 대해 알아보겠습니다. Completable은 아이템을 발행하지 않고, 단지 정상적으로 실행이 종료되었는지에 대해 관심을 갖습니다. 그러므로 Emitter에서 onNext()난 onSuccess() 같은 메서드는 없고 onComplete()와 onError()만 존재합니다. Completable.create(emitter -> { emitter.onComplete(); }).subscribe(() -> Log.d("log_test", "onComplete")); 결과 Completable.fromRunnable(() -> { }).subscribe(() -> Log.d("log_test", "onComp..
안녕하세요 헬창코딩입니다. 이번에는 Maybe에 대해서 알아보도록 하겠습니다. Maybe는 Single과는 비슷하지만 아이템을 발행하거나 발행하지 않을 수도 있다는 점에서 차이가 있습니다. 아이템을 발행할 때는 onSuccess(T)를 호출하고, 발행하지 않을 때는 onComplete()를 호출합니다. 그러므로 onSuccess()를 호출하는 경우 onComplete()를 호출할 필요는 없습니다. Maybe.create(emitter -> { emitter.onSuccess(100); emitter.onComplete(); //무시된다 }) .doOnSuccess(item -> Log.d("log_test", "doOnSuccess::" + item)) .doOnComplete(() -> Log.d("l..