9872번: Record Kepping
백준/문제2024. 8. 9. 13:419872번: Record Kepping

문제 출처 : https://www.acmicpc.net/problem/9872 언어 : Kotlin 문제 설명 :Farmer John has been keeping detailed records of his cows as they enter the barn for milking. Each hour, a group of 3 cows enters the barn, and Farmer John writes down their names. For example over a 5-hour period, he might write down the following list, where each row corresponds to a group entering the barn: BESSIE ELSIE MATILDA F..

클린 아키텍처의 기본 개념 (2)
개발/AOS2024. 8. 8. 17:31클린 아키텍처의 기본 개념 (2)

클린 아키텍처의 개요1. 경계(boundary) 만들기저수준 모듈: 상세한 기능 구현, 변경이 잦을만한 요소들의 집합 (예: 문자열 암호화 이후, 로컬 및 원격 DB에 저장) 고수준 모듈: 핵심적인 비즈니스 로직, 추상적으로 서술 (예: 문자열 저장) 2. 클린 아키텍처란? 소프트웨어 구조를 설계할 때 지켜야 할 원칙과 방법을 정의한 개념 2-1. 의존성 규칙 의존성은 반드시 바깥에서 안쪽으로. 소스코드의 의존성 방향이 동심원 안쪽으로 향하고 있다.내부의 원을 Entities라고 가정하면, 내부의 원은 외부에 대해서 몰라야 한다.외부의 원은 내부의 것을 의존하기 때문에 내부를 알 수 있다. 예를 들어, UI의 변경(외부의 원)으로 인해서 이 Entities(내부의 원)을 변경하면 안된다. 2-2. 엔티티..

30403번: 무지개 만들기
백준/문제2024. 8. 8. 15:1030403번: 무지개 만들기

문제 출처 : https://www.acmicpc.net/problem/30403 언어 : Kotlin 문제 설명 :무지개 문자열은 R(빨간색), O(주황색), Y(노란색), G(초록색), B(파란색), I(남색), V(보라색) 순으로 이루어진 문자열이며, 대소문자를 구분하지 않는다. 임스는 춘배에게 영어 대소문자로 이루어진 문자열을 제공하고, 해당 문자열에 있는 문자들을 활용하여 무지개 문자열을 만들 수 있는지 물어봤다. 임스가 춘배에게 제공한 문자열의 길이 N과, 문자열이 주어질 때, 소문자로만 이루어진 무지개를 만들 수 있으면 yes, 대문자로만 이루어진 무지개를 만들 수 있으면 YES, 두 가지 모두 만들 수 있으면 YeS, 두 가지 모두 만들 수 없으면 NO!를 출력한다. 입력 :첫 번째 줄에는..

9584번: Fraud Busters
백준/문제2024. 8. 8. 14:569584번: Fraud Busters

문제 출처 : https://www.acmicpc.net/problem/9584 언어 : Kotlin 문제 설명 :The number of cars in Default City that travel to the city center daily vastly exceeds the number of available parking spots. The City Council had decided to introduce parking fees to combat the problem of overspill parking on the city streets. Parking fees are enforced using an automated vehicle registration plate scanners that tak..

개발/AOS2024. 8. 7. 17:39클린 아키텍처의 기본 개념 (1)

아키텍처 설계와 원칙1. 아키텍처란(Architecture)?소프트웨어에서 말하는 아키텍처란, 해당 소프트웨어를 구현한 시스템의 형태를 말하는 것이다. 그러한 형태는 개발, 배포, 운영, 유지보수를 쉽게 할 수 있도록 도와준다. 목표는 개발을 할때 투입되는 비용을 최소화하는 것이다. 아키텍쳐는 스파게티 코드처럼 코드가 엉망이 되어가는 것을 방지하는 규약이자 약속이다.일부 개발자들은 지저분하더라도 우선 개발을 빨리 하고 아키텍쳐는 나중에 하자고 한다. 하지만 엉망이 된 코드를 다시 정리하는데 걸리는 시간은 처음부터 깔끔하게 만드는 것보다 배로 시간이 걸릴 것이다. 개발하는 사람 본인의 더 중요한 가치가 시간이라면 아키텍처가 더 나은 선택이 될 것이다. 2. 설계 원칙 (SOLID)단일 책임 원칙 (Sing..

개발/AOS2024. 8. 7. 15:50[Hilt] Hilt의 API 활용 및 예제 (2)

Custom 컴포넌트 만들기커스텀 컴포넌트란, 사용자가 정의한 컴포넌트로 표준 컴포넌트 하위에 위치시킬 수 있다 1. Custom 컴포넌트 정의하기@DefineComponent(parent = SingletonComponent::class)interface MyCustomComponent 인터페이스를 선언하고 @DefineCompoent 애노테이션을 사용한다. 2. Custom 컴포넌트 빌더 정의하기@DefineComponent.Builderinterface MyCustomComponentBuilder { fun setFoo(foo: Foo): MyCustomComponentBuilder fun build(): MyCustomComponent} 컴포넌트를 만들기 위한 컴포넌트 빌더를 만든다.D..

25183번: 인생은 한 방
백준/문제2024. 8. 7. 14:4225183번: 인생은 한 방

문제 출처 : https://www.acmicpc.net/problem/25183 언어 : Kotlin 문제 설명 :재형이는 인생 역전을 위해 오늘도 로또를 샀다. 로또를 구매하면 알파벳 대문자 N개가 일렬로 적힌 문자열이 주어진다.  로또에 당첨되기 위해선 인접한 문자가 모두 사전상에서 이웃한, 길이 5 이상의 부분 문자열이 로또 문자열에 존재해야 한다. 예를 들어 'C'와 사전상에서 이웃한 문자는 'B'와 'D'이고, 'Z'와 이웃한 문자는 'Y' 하나이며, 자기 자신과는 이웃하지 않는다. 따라서, 로또 문자열이 "ABCDE", "ASGXYZYXE", "WEFGHIJKA"인 경우는 당첨이고, "ABCDF", "CXYZAB", "AAAAA"는 당첨되지 않은 경우이다.    알파벳 대문자 N개로 이루어진..

20494번: 스시
백준/문제2024. 8. 7. 14:2720494번: 스시

문제 출처 : https://www.acmicpc.net/problem/20494 언어 : Kotlin 문제 설명 :천하제일코딩대회를 마치고 N명의 운영진은 회전 초밥집으로 회식을 가서 스시를 먹기로 했다. 이 식당에는 총 26가지의 스시가 있으며, 이는 문자 A부터 Z까지에 대응하여 생각할 수 있다. 회전 초밥집은 아래 그림과 같이 N+1개의 의자와 N+1개의 접시로 이루어져 있다. 사람들은 계속 자신의 자리에 앉아 있으며, 매 분마다 접시들은 시계방향으로 한 칸씩 이동한다.   S_0에는 셰프가 앉아 있으며, 매 분마다 셰프는 자신 앞에 온 접시가 비어있지 않으면 아무 행동도 하지 않고, 자신 앞에 온 접시가 비어있으면, 한 점의 스시를 만들어 접시에 올린다. 하지만, 현재 상태에서 셰프가 더 이상 ..

[Hilt] Hilt의 API 활용 및 예제 (1)
개발/AOS2024. 8. 6. 18:56[Hilt] Hilt의 API 활용 및 예제 (1)

ViewModel안드로이드에서 뷰모델을 사용하는 이유는 애플리케이션에서 상태를 유지하기 위함이다. 상태(State)라는 것은 간단하게 말하자면 시스템에 정보가 기억되는 것을 의미한다. 안드로이드는 PC 운영체제와 비교하여 상대적으로 낮은 사양에서도 애플리케이션이 원활히 실행될 수 있도록 설계된다. 그렇기에 필요없다 판단되는 것들은 전부 종료하여 메모리를 확보한다. 이 과정에서 액티비티와 같은 안드로이드 컴포넌트들이 수명주기에 따라 파괴되기도 한다. 대표적으로 구성변경이 발생할때다. 예) 화면 회전, 화면 크기 변경, 라이트/다크 모드 변경 등등 화면 회전의 경우, 액티비티가 파괴되고 다시 onCreate되며 재생성된다. 액티비티 인스턴스 내 레퍼런스되고 있던 모든 객체들이 GC 대상이 된다. 예외적으로 ..

12104번: 순환 순열
백준/문제2024. 8. 6. 15:4012104번: 순환 순열

문제 출처 : https://www.acmicpc.net/problem/12104 언어 : Kotlin 문제 설명 :두 바이너리 문자열 A와 B가 주어졌을 때, A와 XOR 했을 때, 0이 나오는 B의 순환 순열의 개수를 구하는 프로그램을 작성하시오. 순환 순열이란 순열 P = P0, P1, ..., PN-1이 있을 때, 왼쪽으로 k번 순환 이동시킨 순열이다. 즉, P를 k번 순환 이동 시키면, Pi -> Pi+k mod n 이 된다. 입력 :첫째 줄에 A, 둘째 줄에 B가 주어진다. A와 B의 길이는 105를 넘지 않는 자연수이며, 두 문자열의 길이는 같다. 출력 :첫째 줄에 A와 XOR했을 때, 0이 나오는 B의 순환 순열의 개수를 출력한다. 제한 사항 :시간 제한 : 2초메모리 제한 : 512MB ..

image