확장 4

[Kotlin] Nullability(널 가능성) - 2

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 이전 글에서 이어진다. 이전 글 : https://sh1mj1-log.tistory.com/211 [Kotlin] Nullability(널 가능성) - 1 Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. Nullability(널 가능성)은 NPE(`NullPointerException`) 오류를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성이다. 코 sh1mj1-log.tistory.com 지연 초기화할 프로퍼티 실제로는 not-null 인 프로퍼티인데 생성자 안에서 not-null 값으로 초기화할 방법이 없는 경우가..

Kotlin 2024.01.18

[Kotlin] 로컬 함수 & 확장

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 좋은 코드의 특징 중 하나는 중복이 없는 것이다. 이에 관해서 DRY(Don't Repeat Yourself) 원칙이라는 이름도 있다. 만약 어떤 함수 안에 같은 구조의 코드가 반복된다면 어떻게 이 반복을 줄일 수 있을까? 메서드를 더 작은 단위의 메서드로 나눌 수 있을 것이다. 물론 이것도 좋은 방법이다. 코틀린에서는 다른 방법도 존재한다. 로컬(local) 함수 코틀린에서 로컬 함수는 함수에서 추출한 함수를 원 함수 내부에 중첩시키는 기능이다. 이렇게 하면 문법적인 부가 비용 없이도 깔끔하게 코드를 만들 수 있다. 아래 `User`를 DB 에 저장하는 함수 예제가 있다. class Us..

Kotlin 2024.01.04

[Kotlin] 컬렉션 처리 API 확장 & 가변 인자(vararg) 함수

Kotlin in Action 을 공부하고 Effective kotlin 의 내용을 조금 참조하여 정리한 글입니다. 자바 컬렉션 API 확장 이전에 코틀린 컬렉션은 자바와 같은 클래스를 사용하지만 더 확장된 API 를 제공한다고 했다. @Test fun collectionExtension() { val strings: List = listOf("first", "second", "fourteenth") println(strings.last()) // fourteenth printed val numbers: Collection = setOf(1, 14, 2) println(numbers.max()) // 14 printed } 이런 코드가 어떻게 작동할까? 어떻게 자바 라이브러리의 컬렉션에 대해 코틀린에서 ..

Kotlin 2024.01.03

확장 유클리드 호제법 자바 백준 BOJ 21568 Ax+By=C

확장 유클리드 호제법 유클리드 호제법의 목적이 두 수의 최대 공약수를 구하는 것이라면 확장 유클리드 호제법의 목적은 방정식의 해를 구하는 것입니다. 제대로 이것을 이해하려면 수학적인 증명이 필요하지만 우리는 관련 알고리즘 구현만 알아봅시다. 확장 유클리드 호제법의 원리 해를 구하고자 하는 방정식은 ax + by = c 입니다. (a, b, c, x, y 는 정수) 위 방정식은 c % gcd(a,b) = 0 인 경우에만 정수해를 가집니다. 즉, c 가 a 와 b 의 최대 공약수의 배수인 경우에만 정수해를 가집니다. ax + by = c 가 정수해를 갖게 하는 c 의 최소값이 gcd(a,b) 라는 것을 의미합니다. 5x + 9y = 2 일 때 이 식을 만족하는 정수 x, y 을 구하는 과정을 봅시다. 1. ..