일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- jvm 작동 원리
- 객체
- 2022 플러터 안드로이드 스튜디오
- android ar 개발
- ANR이란
- 스택 자바 코드
- 안드로이드 유닛테스트란
- 2022 플러터 설치
- 플러터 설치 2022
- 클래스
- 서비스 쓰레드 차이
- 멤버변수
- 안드로이드 유닛 테스트
- 안드로이드 레트로핏 사용법
- android retrofit login
- 안드로이드 라이선스 종류
- rxjava hot observable
- jvm이란
- 스택 큐 차이
- 안드로이드 os 구조
- rxjava disposable
- 안드로이드 레트로핏 crud
- 안드로이드 라이선스
- 큐 자바 코드
- rxjava cold observable
- ar vr 차이
- Rxjava Observable
- 자바 다형성
- 서비스 vs 쓰레드
- 안드로이드 유닛 테스트 예시
- Today
- Total
목록2024/06 (33)
나만을 위한 블로그

의존성 주입은 hilt, koin 등의 라이브러리를 활용해 프로젝트에 적용할 수 있다.의존성 주입이라는 단어의 뜻을 모른다면 영문 위키백과의 내용을 확인해 본다. https://en.wikipedia.org/wiki/Dependency_injection Dependency injection - WikipediaFrom Wikipedia, the free encyclopedia Software programming technique Dependency injection is often used alongside specialized frameworks, known as 'containers', to facilitate program composition. In software engineering, dep..

같은 타입인 객체의 중복 바인딩을 유지하면서 사용해야 할 경우가 있다. 예를 들어 base url이 서로 다른 레트로핏 객체를 생성하고 싶을 수 있다.그러나 hilt는 같은 타입의 객체를 바인딩하려고 하면 DuplicateBindings 태그가 포함된 에러가 발생한다.이 때 사용할 수 있는 hilt 어노테이션이 2가지 있다. QualifierNamed 각 어노테이션의 사용 방법을 간단하게 확인한다. 프로젝트에 hilt를 사용하도록 설정하는 건 생략한다.먼저 Qualifier 어노테이션을 쓰기 전 아래 클래스들을 미리 작성해둔다. import javax.inject.Injectclass Bar @Inject constructor() {}class Foo constructor(val name: String)..
각 단어와 브루트 포스라는 단어의 사전적 정의는 아래와 같다. Brute : 짐승, 신체적인 힘(폭력)에만 의존하는Force : 물리력, 폭력 / (물리력을 이용해서) 억지로 ~~하다Brute Force : 억지 기법(무차별 대입해 억지로 문제를 푸는) 모든 방법을 다 동원해서 답을 찾는 알고리즘이라 생각된다.아래는 위키백과에서 설명하는 브루트 포스 알고리즘이다. https://en.wikipedia.org/wiki/Brute-force_search Brute-force search - WikipediaFrom Wikipedia, the free encyclopedia Problem-solving technique and algorithmic paradigm This article is about the..

입력받은 문자열에 toInt()를 걸면 바로 아스키 값을 얻을 수 있다.이 때 주의할 것은 readln() 뒤에 반드시 first()를 붙여야 한다. 그렇지 않으면 for input string 에러가 발생하면서 아스키 값을 구할 수 없다. fun main() { val target = readln().first() println(target.toInt())} 또는 code 프로퍼티를 사용해서도 같은 값을 구할 수 있다. fun main() { val target = readln().first() println(target.code)} toInt()가 deprecated되어서 대안으로 쓸 수 있으니 편한 걸 사용하면 되겠다.

주어진 문자열에서 각 알파벳들의 등장 위치를 구하는 문제인데 아스키 값을 사용하면 쉽게 풀 수 있다.알파벳 문자들은 컴퓨터 내부에서 숫자로 표현된다. 이 숫자가 아스키 값(ascii value)이라 불리는데, 위치를 구하고자 하는 알파벳에서 'a'를 빼면 그 알파벳의 위치를 알 수 있다. 이를 정수 배열에 적용하면 이 문제와 같이 알파벳 위치 별 등장 여부를 확인하거나, 등장 횟수를 카운트할 때 활용할 수 있다. fun main() { val word = readln() val positions = IntArray(26) { -1 } for (i in word.indices) { val char = word[i] val alphabetIndex = char - '..

입력받은 1~8까지의 숫자가 오름차순인지 내림차순인지, 아니면 둘 중 어디에도 해당하지 않는지 확인해서 각 경우 별 문자열을 출력한다면 풀 수 있긴 하다. fun main() { val num = readln().split(" ").map { it.toInt() } val ascendingList = mutableListOf() for (i in 1 .. 8) { ascendingList.add(i) } val descendingList = mutableListOf() for (i in 8 downTo 1) { descendingList.add(i) } when (num) { ascendingList -> println("a..

입력받은 2가지 숫자를 24시간 표현에 맞게 고쳐서 출력하면 된다. fun main() { var (hour, min) = readln().split(" ").map { it.toInt() } min -= 45 if (min 입력받은 숫자 중 첫 번째가 시, 두 번째가 분이라고 생각한다. 이 때 45분 이른 시간을 구해야 하기 때문에 min에서 45를 뺀다.이 때 min이 음수가 될 수 있다. 10을 입력받은 경우 10 - 45 = -35기 때문에 이 음수를 양수로 보정하는 처리가 필요하다.우리가 시간을 계산할 때 계산 과정을 생각해 보자. 10시 10분에서 45분 빠른 시간을 구한다면 우선 10에서 1을 빼고, 그 후 10에서 45를 뺀 다음 60을 더한다. 10 - 45 + 60이 ..

먼저 장황하게 풀면 아래와 같다. fun main() { val list = arrayListOf() repeat(3) { list.add(readln().toInt()) } val reduceNum = list.reduce { acc, i -> acc * i } val intArr = Array(10) { 0 } reduceNum.toString().mapIndexed { index: Int, c: Char -> when (c) { '0' -> intArr[0] += 1 '1' -> intArr[1] += 1 '2' -> intArr[2] += 1 '3' -> intA..

입력받은 9개의 숫자를 담아둘 공간이 필요하니 정수 리스트가 하나 필요하다. 그리고 readln()을 9번 실행해야 하니 9번 반복해서 실행하고, 숫자를 리스트에 담으면 9개의 숫자가 리스트에 모두 들어갈 것이다.그럼 그 중에서 최대값인 원소와 그 원소의 인덱스를 찾아서 출력하면 된다. fun main() { val list = arrayListOf() repeat(9) { list.add(readln().toInt()) } val max = list.max() val index = list.indexOf(max) + 1 println("$max $index")} 코틀린에서 반복할 때 사용하는 키워드는 대표적으로 for, while이 있지만 repeat라는 함..