코틀린
-
Kotlin - Reflection 과 생성자Kotiln 2021. 8. 4. 15:56
Reflection 을 이용하여 인스턴스를 생성하는 방법을 알아봅시다. 간단한 Person data class 를 생성했습니다. data class Person( var name: String, var age: Number = 20 ) age 프로퍼티에 기본 값으로 20 을 주었습니다. println("생성자 조회") println(Person::class.constructors) 생성자 조회 [fun (kotlin.String, kotlin.Number): chung.study.Person] 먼저 생성자를 조회해보겠습니다. Person 클래스를 생성한 것 과 같이 파라미터가 2개인 생성자가 조회됐습니다. 생성자는 KFunction 인터페이스이며 KCallable 인터페이스를 상속받고 있습니다. KCal..
-
Kotlin - jackson 을 이용하여 객체를 json 으로 변환할 때 주의점Kotiln 2021. 3. 24. 20:19
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.KotlinModule fun main(args: Array) { val testData = TestData("name", "code", false) println(testData) val objectMapper = ObjectMapper().registerModule(KotlinModule()) val res = objectMapper.writeValueAsString(testData) println(res) val data = objectMapper.readValue(res, TestData::class.java) println(dat..
-
코틀린과 삼항 연산자Kotiln 2021. 3. 19. 09:31
결론부터 말하자면 코틀린에는 삼항 연산자가 존재하지 않습니다. 그 대신 if - else 로 대체하거나 when 을 사용하여 표현할 수 있습니다. val a = if(b) b else c 위 처럼 변수에 값을 넣는 방법으로도 사용할 수 있습니다. 왜 삼항연산자가 없는 가를 말하려면 코틀린의 특성을 이야기해야 합니다. 코틀린에서 if 는 문(expression이 아닌 식(statement) 입니다. 식은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있습니다. 따라서 위의 코드 처럼 변수에 값을 넣는 방식으로 사용할 수 있는 것입니다. 그렇기 때문에 삼항연산자와 if 의 역할이 중복되기 때문에 코틀린에서는 빠진 것이라고 추측할 수 있습니다. 코틀린 공식 문서(https://kotlinlang...
-
Codility - BinaryGap [Kotlin]알고리즘 문제 풀이 2021. 2. 23. 00:11
/* * 2021-02-22 * https://app.codility.com/programmers/lessons/1-iterations/binary_gap/ */ fun solution(N: Int): Int { val binaryString = N.toString(2) // var num = N // do { // binaryString += num % 2 // num /= 2 // } while (num != 1) // binaryString += "1" // binaryString = binaryString.reversed() val zeroList = binaryString.split("1").toMutableList() if (binaryString.last() != '1') { ..
-
프로그래머스 - 체육복[코틀린]알고리즘 문제 풀이 2021. 2. 22. 00:19
/* * https://programmers.co.kr/learn/courses/30/lessons/42862?language=kotlin * 2021-02-22 */ package study.programmers.greedy fun gymSuit(n: Int, lost: IntArray, reserve: IntArray): Int { val lostSet = lost.toMutableSet() val reserveSet = reserve.toMutableSet() // 여벌이 있는데 잃어버린 않은 사람들은 도난, 여벌 목록에서 제거 reserve.filter { lostSet.contains(it) }.forEach { reserveSet.remove(it) lostSet.remove(it) } res..
-
프로그래머스 - N 으로 표현 [코틀린]알고리즘 문제 풀이 2021. 2. 7. 20:53
처음 DP 문제를 풀어보았는데 생각하지 못한 부분들 때문에 풀이가 쉽지 않았다. 놓친 부분 NN, NNN 등 의 같은 숫자가 나열되는 부분을 생각하지 않고 사칙연산만 고려함 바로 전에 계산한 값들에 사칙연산만 했음 꼭 문자열을 이용해서 계산하지 않아도 됐음 코드 /* * 2021-02-07 * https://programmers.co.kr/learn/courses/30/lessons/42895 */ fun expressedByN(N: Int, number: Int): Int { val resultList = mutableListOf() var linearNum = 0 for (i in 0..8) { linearNum = linearNum * 10 + N val set = mutableSetOf(linea..
-
프로그래머스 - 여행 경로알고리즘 문제 풀이 2021. 1. 17. 00:46
/* * 2021-01-17 * https://programmers.co.kr/learn/courses/30/lessons/43164?language=kotlin */ fun travelRoute(tickets: Array): Array { // route 를 맵으로 생성 val routeMap = mutableMapOf() tickets.forEach { val start = it[0] val dest = it[1] val routeString = "$start-$dest" val route = routeMap[routeString] if (route == null) { routeMap[routeString] = Route(start, dest, 0, emptyList(), 1) } else { rou..
-
프로그래머스 - 단어 변환알고리즘 문제 풀이 2021. 1. 2. 00:14
/* * 2021-01-01 * https://programmers.co.kr/learn/courses/30/lessons/43163 */ fun wordConversion(begin: String, target: String, words: Array): Int { // words 에 target 이 없는 경우 0 반환 if (!words.any { it == target }) { return 0 } // begin 을 포함한 allWords 생성 val allWords = words.plus(begin) // 각 단어별 노드 생성 val nodeMap = allWords.associate { it to WordNode(it) } nodeMap.forEach { (word, node) -> // 한글자만..