본문 바로가기

전체 글236

[Kotlin][Collection] plus 원래 컬렉션의 모든 요소와 지정된 요소 컬렉션의 모든 요소를 ​​포함하는 목록을 반환합니다.public operator fun Collection.plus(elements: Iterable): List { if (elements is Collection) { val result = ArrayList(this.size + elements.size) result.addAll(this) result.addAll(elements) return result } else { val result = ArrayList(this) result.addAll(elements) return result }}val list.. 2024. 8. 21.
[Kotlin][Collection] partition 원래 배열을 목록 쌍으로 분할합니다. 여기서 첫 번째 목록에는 조건자가 true 를 생성한 요소가 포함되고, 두 번째 목록에는 조건자가 false 를 생성한 요소가 포함됩니다.public inline fun Iterable.partition(predicate: (T) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair.. 2024. 8. 21.
[Kotlin][Collection] lastIndexOf 지정된 startIndex 부터 시작하여 지정된 문자가 마지막으로 나타나는 이 문자 시퀀스 내의 인덱스를 반환합니다.반환 char 의 마지막 발생 인덱스를 반환하거나, 아무것도 발견되지 않으면 -1 을 반환합니다.public fun CharSequence.lastIndexOf(string: String, startIndex: Int = lastIndex, ignoreCase: Boolean = false): Int { return if (ignoreCase || this !is String) indexOf(string, startIndex, 0, ignoreCase, last = true) else nativeLastIndexOf(string, startIndex)}v.. 2024. 8. 21.
[Algorithm] 동적 계획법 (Dynamic Programming, DP) 동적 계획법 (Dynamic Programming, DP)복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법한 가지 문제에 대해서, 단 한 번만 풀도록 만들어주는 알고리즘즉, 똑같은 연산을 반복하지 않도록 만들어준다.실행 시간을 줄이기 위해 많이 이용되는 수학적 접근 방식의 알고리즘주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것하나의 큰 문제를 여러 개의 작은 문제로 나누고, 각 문제의 결과를 저장하여 다시 큰 문제를 해결하는 데 사용한다.일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산될 수 있다.예를 들어 피보나치 수를 구하고 싶을 때 재귀로 함수를 구성하면 O(2ⁿ) 으로, 동적 계획.. 2024. 8. 20.
[CodingTest] 자료구조, 알고리즘, 시간복잡도 자료 구조 (Data Structure)대량 데이터를 효율적으로 관리할 수 있는 데이터 구조, 자료구조라고도 한다.효율적인 데이터 처리를 위해, 데이터의 특성에 따라, 체계적으로 데이터를 구조화하는 것효율적으로 데이터를 관리하는 예:우편번호: 5자리 우편번호로 국가의 기초구역을 제공5자리 우편번호에서 앞 3자리는 시, 군, 자치구를 표기, 뒤 2자리는 일련번호로 구성학생 관리: 학년, 반, 번호를 학생에게 부여해서, 학생부를 관리XX학년, X반, X번 학생만약 위 관리 기법이 없다면 3000명 학생중 특정 학생을 찾기 위해, 전체 학생부를 모두 훑어야 함 알고리즘 (Algorithm)어떤 문제를 풀기 위한 절차/방법어떤 문제에 대해, 특정한 '입력'을 넣으면, 원하는 '출력'을 얻을 수 있도록 만드는 프.. 2024. 8. 20.
[LeetCode][Kotlin] 1758. Minimum Changes To Make Alternating Binary String 1758. Minimum Changes To Make Alternating Binary StringYou are given a string s consisting only of the characters '0' and '1'. In one operation, you can change any '0' to '1' or vice versa. The string is called alternating if no two adjacent characters are equal. For example, the string "010" is alternating, while the string "0100" is not. Return the minimum number of operations needed to make s.. 2024. 8. 20.
[Kotlin][Collection] last / lastOrNull 마지막 요소를 반환합니다.주어진 조건자와 일치하는 마지막 요소를 반환합니다.NoSuchElementException - 배열이 비어 있는 경우public fun List.last(): T { if (isEmpty()) throw NoSuchElementException("List is empty.") return this[lastIndex]}public inline fun List.last(predicate: (T) -> Boolean): T { val iterator = this.listIterator(size) while (iterator.hasPrevious()) { val element = iterator.previous() if (p.. 2024. 8. 20.