Developing Myself Everyday
article thumbnail
양궁대회 - Kotlin

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원회는 한 선수의 연속 우승보다는 다양한 선수들이 양궁대회에서 우승하기를 원합니다. 따라서, 양궁대회 운영위원회는 결승전 규칙을 전 대회 우승자인 라이언에게 불리하게 다음과 같이 정했습니다. 어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니다. 점수를 계산합니다. 과녁판은 아래 사진처럼 생겼으며 가장 작은 원의 과녁 점수는 ..

[Kotlin Coroutine] (6) - 채널 2
Android/Kotlin 2023. 6. 8. 09:58

ConsumeEach() 그럼 명시적인 이터레이션을 사용하지 않고 채널에 있는 내용을 수신할 수는 없을까?? 이를 위한 메서드가 바로 consumeEach()이다. channel.consumeEach { println("Receiving Num $it") delay(100) } 위의 함수를 사용하면 송신측의 receive를 했을 때와 똑같은 결과를 얻을 수 있다. 또한 한 채널에서 생성한 데이터를 여러 개의 수신측이 가져갈 수도 있다. 이를 통해 데이터를 분류해서 처리할 수 있게 될 것이다. Produce() sequence() 함수와 비슷한 동시성 스트림을 생성할 수 있는 produce()라는 코루틴 빌더가 있다. 이 빌더는 ProducerScope 영역을 도입한다. fun main() { runBlo..

1707번: 이분 그래프 - Kotlin (BFS)
백준/그래프 탐색 2023. 6. 7. 15:36

1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 문제 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의..

2225번: 합분해 - Kotlin
백준/DP 2023. 6. 7. 14:27

2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오. 덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다. 입력 첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다. 출력 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. 나의 풀이 이 문제는 DP를 사용해야 하는 문제이다. 이 문제의 특징은 한 개의 수를 여러 번 쓸 수 있고, 0을 포함할 수 있다는 것이다. 이 말은 만약 입력이 [1, 4] 가 들어간다고 했을 ..

article thumbnail
Android App Architecture (안드로이드 앱 아키텍처)
Android 2023. 6. 7. 12:09

앱 아키텍처 가이드 | Android 개발자 | Android Developers 앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함 developer.android.com 앱의 구성요소는 개별적이고 비순차적으로 실행될 수 있으며, 운영체제나 사용자가 언제든지 앱 구성요소를 제거할 수 있다. 이러한 이벤트는 직접 제어할 수 없기 때문에 앱 구성요소에 애플리케이션 데이터나 상태를 저장해서는 안 되며 구성요소가 서로 종속되면 안된다고 안드로이드는 말한다. ✔ 4가지의 일반 아키텍처 원칙 그래서 안드로이드의 앱은 견고성을 높이며 앱을 더 쉽게 테스트할 수 있도록 아키텍처를 정의하는..

article thumbnail
RxJava에 대해
Android/Kotlin 2023. 6. 6. 20:44

RxJava에 대한 공부를 시작하는 이유 요즘 프로젝트를 진행하면서 Retrofit2를 이용해 서버와 통신을 많이 진행하고 있다. 네트워크 요청은 Call 객체를 통해 비동기적으로 수행되고, enqueue() 메서드를 호출해 비동기로 요청을 실행하거나 execute() 메서드를 호출하여 동기적으로 실행할 수 있다. 예시는 아래와 같다. interface MyApiService { @GET("users/{id}") fun getUser(@Path("id") userId: String): Call } val BASE_URL = "baseurl" val retrofit = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFacto..

11054번: 가장 긴 바이토닉 부분 수열 - Kotlin
백준/DP 2023. 6. 6. 18:25

11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 문제 수열 S가 어떤 수 Sk를 기준으로 S1 Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다. 예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다. 수열 A가 주어졌을 때, 그 수열의 부분 수열..

article thumbnail
[Kotlin Coroutine] (5) - Channel (채널)
Android/Kotlin 2023. 6. 6. 14:00

채널이란? 채널은 2개의 코루틴 사이를 연결할 수 있는 파이프 같은 것이다. 임의의 데이터 스트림을 코루틴 사이에 공유할 수 있다. 만약 채널 내부의 용량이 다 찼는데 데이터를 채널에 보내려고 하면, 채널은 현재 코루틴을 일시 중단시키고 나중에 재개하게 된다. 이 부분이 자바의 동시성 API에서의 Blocking Queue와 채널의 가장 큰 차이이다. 채널의 타입 채널의 타입은 크게 4가지로 나눌 수 있다. 1. Buffered 2. Rendezvous (Unbuffered) 3. Unlimited 4. Conflated 이제부터 이 4가지의 타입을 어떻게 사용하는지 알아보겠다. 1. Buffered 고정된 크기의 버퍼를 생성하는 타입이다. 아래의 예제를 보자 fun main() { runBlocking..