16434번: 드래곤 앤 던전 첫 번째 줄에 방의 개수 N (1 ≤ N ≤ 123,456) 과 용사의 초기 공격력 HATK (1 ≤ HATK ≤ 1,000,000) 가 주어집니다. i+1번째 줄엔 i번째 방의 정보를 나타내는 세개의 정수 ti, ai, hi (ti ∈ {1, 2}, 1 www.acmicpc.net 사진: Unsplash의順平 黃 문제 용사는 공주를 구하기 위해 무시무시한 용이 있는 던전으로 향하기로 하였습니다. 우선 용사는 용사 자신과 던전을 분석하였습니다. 용사에게는 세 종류의 능력치가 있습니다. HMaxHP : 용사의 최대 생명력입니다. 이 값은 1이상이어야 하며 던전에 들어간 이후로 변하지 않습니다. HCurHP : 현재 용사의 생명력입니다. 던전에 들어가기 전 이 값은 용사의 최대..
사진: Unsplash의Braden Collum 이전에 아래의 게시글에서 상태에 대해 알아본적이 있습니다. State와 StatedFlow, SharedFlow에 대해 알아보기 State란? State는 객체 지향 관점에서 자주 사용되는 단어로 객체가 특정 시점에서 어떤 데이터 값을 가지고 있는지 나타내는 것으로, 객체의 특성이나 속성을 나타냅니다. 안드로이드의 UI 레이어 everyday-develop-myself.tistory.com 앱의 상태는 시간이 지남에 따라 변할 수 있는 값을 의미합니다. 이번 게시글에서는 Compose에서 앱의 상태를 어떻게 저장하고 사용하는지 알아보고자 합니다. Compose와 상태 Compose는 선언형 UI 프레임워크로 Composition을 통해 UI를 기술합니다. ..
도대체 이놈의 클린 아키텍처가 뭐길래 이렇게 저를 괴롭히는지 모르겠습니다. 클린 아키텍처를 처음 접하고, 이것이 뭔지 이해하기 까지도 시간이 많이 걸렸습니다. 그럼에도 아직 잘 모르는 것이 너무나도 많습니다. 그래서 클린 아키텍처를 다시 한번 정리하고 안드로이드가 권장하는 아키텍처를 실제로 도입한 간단한 로그인 앱을 만들어보려고 합니다. 주의!!!! 이 모든 것은 공부하는 학생의 입장에서 작성한 내용입니다. 틀린 내용이 있을 수 있으므로 혹시 발견하신다면 댓글로 알려주세요 클린 아키텍처란?그럼 도대체 클린 아키텍처란 뭘까요? 검색으로 가장 먼저 알 수 있는 것은 다음과 같습니다. 클린 아키텍처는 『클린 코드(Clean Code)』를 저술한 로버트 마틴(Robert C. Martin)이 제안한 ..
17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 사진: Unsplash의Jose Francisco Morales 문제 ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종료되고, 두 팀이 공격과 수비를 서로 바꾼다. 두 팀은 경기가 시작하기 전까지 타순(타자가 타석에 서는 순서)을 정해야 하고, 경기 중에는 타순을 변경할 수 없다. 9번 타자까지 공을 쳤는데 3아웃이 발생하지 않..
안드로이드 개발을 하면서 Compose를 사용하지 않는 것은 이제는 많이 뒤져치는 것 같습니다. 그렇기에 Compose를 제대로 공부해보고 있습니다. 다만 누가 "Compose에 대해서 이해하고 있느냐?" 라고 묻는다면 "그건 선언적 UI야" 라고밖에 말할 수 없을것 같습니다. 그렇기에 아래의 게시글을 보면서 Compose에 대해 정리해보는 시간을 가지려 합니다. Understanding Jetpack Compose — Part 1 of 2 Better UI building with Compose medium.com Under the hood of Jetpack Compose — part 2 of 2 Under the hood of Compose medium.com Jetpack Compose는 무엇인가..
20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 사진: Unsplash의Vernon Raineil Cenzon 문제 어른 상어가 마법사가 되었고, 파이어볼을 배웠다. 마법사 상어가 크기가 N×N인 격자에 파이어볼 M개를 발사했다. 가장 처음에 파이어볼은 각자 위치에서 이동을 대기하고 있다. i번 파이어볼의 위치는 (ri, ci), 질량은 mi이고, 방향은 di, 속력은 si이다. 위치 (r, c)는 r행 c열을 의미한다. 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 ..
State란? State는 객체 지향 관점에서 자주 사용되는 단어로 객체가 특정 시점에서 어떤 데이터 값을 가지고 있는지 나타내는 것으로, 객체의 특성이나 속성을 나타냅니다. 안드로이드의 UI 레이어 가이드에서는 UI 레이어의 UI State를 생성하고 관리하는 수단으로 단방향 데이터 흐름(UDF)을 설명합니다. 이러한 State는 UI와 관련된 데이터를 저장하고 관리하는데 사용되는 상태 홀더인 ViewModel을 통해 관리됩니다. 상태 홀더인 ViewModel은 앱이 상태를 읽을 수 있도록 상태를 저장합니다. 로직이 필요한 경우 필요한 로직을 호스팅하는 데이터 소스에 대한 액세스 권한을 제공합니다. LiveData 이러한 State 데이터를 다루기 위해 안드로이드에서는 LiveData를 사용했습니다. ..
사진: Unsplash의Solen Feyissa 시퀀스(Sequences)와 Flow 시퀀스는 Iterable과 동일한 기능을 제공하지만 다른 접근 방식을 구현합니다. 바로 가능한 한 지연 실행(Lazy Evaluation) 한다는 것입니다. 시퀀스를 사용하면 실제 계산은 전체 처리 체인의 결과가 요청될 때만 발생합니다. 시퀀스는 각 요소에 대해 모든 처리 단계를 하나씩 순차적으로 수행합니다. 따라서 시퀀스를 사용하면 중간 단계의 결과를 만들지 않고 전체 컬렉션 처리 체인의 성능을 향상시킬 수 있습니다. 시퀀스와 중단 함수 아래와 같은 예시를 보겠습니다. fun simple(): Sequence = sequence { // sequence builder for (i in 1..3) { Thread.sle..