앱 아키텍처는 클래스 간에 앱 책임을 할당하는 데 도움이 되는 가이드라인을 제공한다. 앱 아키텍처가 잘 디자인되어 있다면 앱을 확장하고 더 많은 기능을 추가하는데 도움이 된다. 아키텍처는 팀 공동 작업을 간소화시킬 수도 있다. 가장 일반적인 아키텍처 원칙은 관심사 분리와 모델에서 UI 만들기이다.관심사 분리란, 디자인 원칙은 각각 별개의 책임이 있는 여러 함수 클래스로 앱을 나눠야 한다는 원칙이다.모델에서 UI 만들기란, 모델에서 UI를 만들어야한다는 원칙으로, 모델은 앱의 데이터 처리를 담당하고 앱의 UI 요소 및 앱 구성요소와 독립되어 있으므로 앱의 수명 주기 및 관련 문제에 영향을 받지 않는다. 아키텍처 원칙에 대한 더 자세한 내용은 다음을 참고하라.https://developer.android.c..
Compose는 리컴포지션 중에 상태를 기억하지만, 구성 변경 중에는 이 상태를 유지하지 않는다.그렇기에 상태를 유지하기 위해서는 remeberSaveable을 사용해야 한다. https://small-stepping.tistory.com/880 Jetpack Compose에서의 StateJetpack Compose에서의 State란?상태는 어떤 타입이든 될 수 있다. Int, Float, Double, Boolean, String, 여러 값을 포함한 data class 등Jetpack Compose에서는 이 상태 값이 변경될 때마다 UI는 업데이트 된다. Composesmall-stepping.tistory.com 이전에 공부했던 상태를 저장하는 remember와 mutableStateOf()는 상태..
문제 출처 : https://www.acmicpc.net/problem/1036 언어 : Kotlin 문제 설명 :36진법의 숫자는 0부터 9까지의 수와 알파벳 A에서 Z로 나타낸다. A부터 Z까지 알파벳은 10부터 35에 차례대로 대응한다. 36진법의 수 N개가 주어진다. 36진법 숫자(0-9, A-Z) 중에서 K개의 숫자를 고른다. 그러고 나서 N개의 수 모두에서 나타난 그 숫자를 Z로 바꾼다. 그 이후에 N개의 수를 모두 더한다. 이때 가능한 합의 최댓값을 구하는 프로그램을 작성하시오. 합의 최댓값도 36진수로 출력한다. 입력 :첫째 줄에 수의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에 수가 주어진다. N은 최대 50이고, 수의 길이도 최대 50이다. 마지막 줄에 K가 주어진다. K는 36보다 ..
문제 출처 : https://www.acmicpc.net/problem/30501 언어 : Kotlin 문제 설명 :천하제일의 장수 관우도 결국 죽음을 맞이했다. 유비와 장비는 관우의 복수를 위해 N명의 용의자 중 관우를 죽인 범인을 찾으려 한다. 관우와 함께 있었던 장수의 말에 따르면 관우를 죽인 범인의 이름에는 S가 들어간다. 관우를 죽인 용의자 이름의 리스트에서 관우를 죽인 범인의 이름을 찾는 프로그램을 작성하시오. 입력 :첫째 줄에 용의자의 수를 뜻하는 정수 N이 주어진다. (1 둘째 줄부터 N개의 줄에 걸쳐 용의자의 이름이 한 줄에 하나씩 주어진다. 이름은 영어 대문자로만 이루어져 있으며, 이름의 길이는 100글자를 넘지 않는다. 항상 답이 유일하게 존재하는 경우만 입력으로 주어진다. 출력 :첫..
문제 출처 : https://www.acmicpc.net/problem/2993 언어 : Kotlin 문제 설명 :독서를 싫어하는 원섭이는 책에서 단어 하나를 임의로 선택한다. 그 다음, 단어를 세 부분으로 나눈다. 세 부분으로 나눈 단어를 각각 순서를 뒤집는다. (첫 번째 글자와 마지막 글자의 위치를 바꾸고, 두 번째 위치와 뒤에서 두 번째 글자의 위치를 바꾸고... 이런 식으로 계속) 마지막으로, 이 세 단어를 나누기 전과 같은 순서로 합쳐 하나로 만든다. 원섭이는 사전순으로 가장 앞서는 단어를 만들려고 한다. 원섭이가 고른 단어가 주어졌을 때, 만들 수 있는 단어 중 가장 앞서는 단어를 출력하는 프로그램을 작성하시오. 입력 :첫째 줄에 원섭이가 고른 단어가 주어진다. 고른 단어는 알파벳 소문자로 이..
문제 출처 : https://www.acmicpc.net/problem/2890 언어 : Kotlin 문제 설명 :상근이는 카약 대회를 개최했다. 대회는 전세계에 생중계되고, 위성이 경기장 전체를 촬영하고 있다. 상근이는 위성 사진을 바탕으로 실시간 순위를 계산하는 프로그램을 만들려고 한다. 위성 사진은 R행 C열이다. 모든 줄의 첫 번째 글자는 'S'이고 출발선을 의미한다. 또, 마지막 글자는 'F'이고 이것은 결승선을 의미한다. 대회에 참가한 팀은 총 9팀이고, 각 팀은 1부터 9까지 번호가 매겨져 있다. 카약은 항상 열에 대해 연속하는 세 칸을 차지하며, 카약 번호로 표시한다. 마지막으로 물은 '.'로 나타나 있다. 팀의 순위는 결승선으로부터 떨어진 거리로 측정한다. 가까울수록 순위가 높다. 만약,..
Jetpack Compose에서도 마찬가지로 애니메이션을 구현할 수 있다. 애플리케이션에서 애니메이션을 구현해야하는 이유는 무엇일까? 앱의 현재 상황에 관한 시각적인 단서를 준다.앱의 완성도를 높히며, 세련된 느낌을 준다.사용자의 경험을 끌어올려 상호작용을 극대화시킨다.외에도 우리는 애니메이션을 앱에 구현함으로써 얻는 이점을 위해 애니메이션을 구현하고자 한다. https://developer.android.com/develop/ui/compose/animation/introduction?hl=ko Compose의 애니메이션 | Jetpack Compose | Android DevelopersCompose의 애니메이션은 사용하기 쉬우며 앱에서 훌륭한 상호작용을 제공합니다.developer.andro..
문제 출처 : https://www.acmicpc.net/problem/27964 언어 : Kotlin 문제 설명 :치즈와 피자에 환장하는 비행씨는 매일같이 치즈피자를 사 먹다가 지갑이 거덜 나고 말았다. 만들어 먹는 것이 사 먹는 것보다 싸다는 것을 안 비행씨는 여러 가지 토핑을 가져와서 직접 피자를 만들어 먹기로 했다. 콰트로치즈피자는 이름 그대로, 서로 다른 네 종류의 치즈가 토핑으로 들어가야 한다. 수많은 치즈피자를 먹어 온 비행씨는 토핑의 이름이 Cheese로 끝나면 이 토핑이 치즈라는 사실을 알고 있다. 비행씨가 가져온 토핑의 목록을 보고, 이 토핑의 일부 혹은 전부를 이용하여 콰트로치즈피자를 만들 수 있는지 답해 보자. 입력 :첫 번째 줄에 토핑의 개수가 1 이상 100 이하의 정수로 주어진..
문제 출처 : https://www.acmicpc.net/problem/14915 언어 : Kotlin 문제 설명 :정수 m, n을 입력 받아, 10진수 m을 n진수로 바꾸어 출력하는 프로그램을 작성하시오. 입력 :첫 줄에서 정수 m, n을 입력 받는다. (0 ≤ m ≤ 1,000,000, 2 ≤ n ≤ 16) 출력 :변환한 n진수의 수를 출력한다. 11~16 진수의 경우 10 이상의 수는 A~F 문자를 사용한다. 예를 들어, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용한다. 제한 사항 :시간 제한 : 2초메모리 제한 : 512MB 입출력 예 :입력출력8 2100015 433248 16F8 풀이 : import java.io.BufferedReaderimport jav..
문제 출처 : https://www.acmicpc.net/problem/14713 언어 : Kotlin 문제 설명 :자가용 비행기를 타고 세계 일주를 하던 pps789와 cseteram은 어느 날 엔진 고장으로 인해 이름 모를 섬에 불시착하게 된다. 그들은 이 섬을 탐험하는 도중 아주 신기한 사실을 알게 되었는데, 바로 이 섬에 사는 앵무새들은 놀라울 정도로 인간의 말을 흉내 내는 데 뛰어나다는 것이다. 그들은 서로 떨어져 섬을 탐험하기로 하였으며, 필요하다면 앵무새를 이용해 서로에게 연락하기로 약속하였다. 1개월 후, pps789는 섬의 비밀을 밝힐 결정적인 증거를 찾게 된다. 그는 이 세기의 대발견을 cseteram에게 공유하고자 하였으나, 그의 발견은 방대하여 앵무새 한 마리가 기억하기에는 너무 많..