문제 출처 : https://www.acmicpc.net/problem/31306 언어 : Kotlin 문제 설명 :The Vowels are a, e, i, o and u, and possibly y. People disagree on whether y is a vowel or not. Unfortunately for you, you have been tasked with counting the number of vowels in a word. You'll have to count how many vowels there are assuming y is a vowel, and assuming y is not. 입력 :The single line of input contains a string of at ..
문제 출처 : https://www.acmicpc.net/problem/21966 언어 : Kotlin 문제 설명 :드높은 남산 위에 우뚝 선(중략)세워라 반석 위에선린의 터를 1개 이상의 문장들이 주어진다. 아래 규칙에 따라 문장들의 중간 부분을 적당히 생략해 25글자 이내로 요약해서 출력하는 프로그램을 작성하자. 단, 입출력의 편의를 위해 문장들을 공백 없이 모두 붙여 구성한 문자열 S가 대신 주어진다. 문자열의 첫 글자부터 가장 먼저 만나는 '.'(마침표)까지, 그리고 각 '.'의 다음 글자부터 가장 먼저 만나는 '.'까지를 한 문장으로 생각하기로 하자. 예를 들어 주어진 문자열 S가 'IamInevitable.IamIronMan.'이라면 'IamInevitable.'이 한 문장, 'IamIronM..
AndroidEntryPoint의 이해Dagger에서 말하는 Component는 의존성을 관리하는 컨테이너를 말한다. SubComponent는 어떤 컴포넌트의 하위에 속하는 컴포넌트를 일컫는다. SubComponent의 하위에 있는 또다른 컴포넌트 또한 SubComponent이다. 그렇기에 엄밀히 따지면 Hilt에서 말하는 Component는 Singleton Component 하나 뿐이다. 나머지는 전부 SubComponent이다. Dagger에서는 여러 컴포넌트를 정의하고 인스턴스화 하는게 가능하지만, Hilt에서는 표준 컴포넌트를 사용하고 그것들이 계층을 이루고 있으므로 엄밀히 따지면 Singleton Component만 컴포넌트라고 할 수 있다는 것이다. Hilt에서 SubComponent를 인스..
기존 Dagger와는 다르게 표준 컴포넌트를 제공하기 때문에 개발자가 따로 커스텀 컴포넌트를 만들 필요는 없다.물론 커스텀 컴포넌트를 정의하는 방법은 있으나 일반적이진 않으며 권장하지 않는 방법이다. Dagger와 달리 표준 컴포넌트 조차 소스 코드내에서 인스턴스화 하지 않는다. 컴포넌트 계층 이미지에서 볼 수 있는 각 컴포넌트 명칭 위의 스코프 애노테이션은 해당 컴포넌트의 생명주기에 대한 의존성 범위를 지정할때 사용되는 애노테이션이다. 컴포넌트간 화살표 방향은 하위 컴포넌트를 가르키는 것이다. 일반적으로 하위 컴포넌트는 상위 컴포넌트의 바인딩에 접근할 수 있다. 하지만 역방향으로는 불가능하다. 예를들어, FragmentComponent에서 ActivityComponent의 의존성으로 접근하는 것은 가능..
문제 출처 : https://www.acmicpc.net/problem/15874 언어 : Kotlin 문제 설명 :여러분들은 고대 로마의 정치인 율리우스 카이사르를 알고 있는가? 그는 정말 대단한 사람이다! 그는 로마의 독재자로도 유명하지만, 고대 암호의 대표격이라 할 수 있는 카이사르 암호(Caesar Cipher)를 만든 사람이기도 하다. 카이사르 암호는 다음과 같은 방식으로 이뤄진다. 알파벳으로 평문을 작성한다. 해당 평문을 얼마나 밀지를 결정한다. 민다는 것은, 한 글자를 알파벳 상의 다음 글자로 바꾸는 것을 말한다. 예를 들어 네 번 밀기로 결정했다면, A는 E로, V는 Z로 바뀐다. 만약 Z를 한 번 더 민다면 A가 된다. 이를 표로 나타내면 다음과 같다. 원문 A B C D E ... V ..
문제 출처 : https://www.acmicpc.net/problem/4821 언어 : Kotlin 문제 설명 :워드, 한글, 메모장과 같은 워드 프로세서에서 인쇄를 할 때, 페이지 범위를 직접 입력하여 지정할 수 있다. 예를 들면, 다음과 같이 입력할 수 있다. 10-15,25-28,8-4,13-20,9,8-8 사용자는 위처럼 인쇄하고자 하는 범위를 콤마로 구분하여 입력할 수 있다. 각 인쇄 범위는 양의 정수 하나 또는 하이픈(-)로 구분된 두 양의 정수이다. 수 두 개로 이루어진 범위에서 앞의 수를 low, 뒤의 수를 high라고 한다. 만약, low > high인 경우에는 이 범위는 인쇄하지 않는다. 또, 인쇄 범위가 문서의 범위를 넘어가는 경우에는 출력할 수 있는 페이지만 출력한다. 페이지 번호..
문제 출처 : https://www.acmicpc.net/problem/10931 언어 : Kotlin 문제 설명 :문자열 S가 주어졌을 때, SHA-384 해시값을 구하는 프로그램을 작성하시오. 입력 :첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다. 출력 :첫째 줄에 S의 SHA-384 해시값을 출력한다. 제한 사항 :시간 제한 : 1초메모리 제한 : 256MB 입출력 예 :입력출력Baekjoon8f077fa785396c86c7f9b8ba03fc41e9ac250a0a3884a2ef5c70638e1a153407b52a58b897a89a0361f2c60c2dc123be 풀이 : import java.io.BufferedReaderim..
애노테이션은 여러가지 속성을 가질 수 있다. 정의된 애노테이션은 클래스에 마킹할 수 있다. 뿐만아니라 필드 메서드 파라미터 등에서도 선택적으로 사용가능하다. 안드로이드에서 많이 사용해본 표준 애노테이션으로 @Override @Non-null 등이 있을 것이다. Hilt의 주요 Annotation의 종류@HiltAndroidApp@AndroidEntryPoint@Module@InstallIn@HiltViewModel 애노테이션의 특징JDK 1.5부터 추가자바(또는 코틀린) 소스코드에 추가하는 메타데이터컴파일러에게 부가정보 제공클래스, 필드, 메서드 및 기타 요소에 선택적으로 선언 가능런타임에서도 참조 가능애노테이션의 목적은 소스코드를 해치지 않으면서 컴파일러에게 부가정보를 제공하기 위해 추가되었다. Ann..
import android.app.Applicationimport dagger.hilt.android.HiltAndroidApp@HiltAndroidAppclass App: Application() {} Hilt의 출발점은 @HiltAndroidApp 애노테이션으로부터 시작된다.이 애노테이션은 애플리케이션 클래스에 마킹하고 빌드하면 기본적인 설정이 끝난다.빌드 이후, 싱글톤 컴포넌트(Container)가 자동적으로 생성된다. 이 싱글톤 컴포넌트에 의존성을 추가할 수 있다.생성자 바인드, 모듈의 프로바이드 어노테이션을 통한 바인딩 기법 두 가지가 존재한다.컴포넌트에 의존성을 추가하는 것을 바인딩, 바인딩을 한다고 표현한다.클라이언트는 컴포넌트에 바인딩된 의존성들을 요청할 수 있다. @AndroidEntr..
문제 출처 : https://www.acmicpc.net/problem/13506 언어 : Kotlin 문제 설명 :문자열 S의 부분 문자열 T 중에서, 접두사(Prefix)도 될 수 있고, 접미사(Prefix)도 될 수 있고, 두 경우가 아닌 위치에도 등장하는 T를 카멜레온 부분 문자열이라고 한다. 문자열 S가 주어졌을 때, 카멜레온 부분 문자열을 구하는 프로그램을 작성하시오. 예를 들어, S = "fixprefixsuffix"와 같은 경우에는 "fix"는 접두사, 접미사도 되고, 두 경우가 아닌 위치에도 등장하는 부분 문자열로도 등장한다. 입력 :첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져있으며, 길이는 106을 넘지 않는 자연수이다. 출력 :가능한 카멜레온 부분 문자열 T 중에..