본문 바로가기
  • 개발하는 곰돌이

Kotlin162

[Kotlin] Kotlin에서의 형변환과 스마트 캐스트(Smart Cast) feat. as, is 개요 코딩을 하다보면 필연적으로 자료형을 변환해야 하는 경우가 생긴다. Java에서는 숫자형의 경우에는 변수의 자료형에 따라서 자동으로 형변환이 일어나서 저장되었고, 변수나 객체 앞에 (자료형)을 붙여주는 것으로 강제로 형변환을 할 수도 있었다. Kotlin도 마찬가지로 형변환이 가능한데 이에 대해 정리하고자 한다. 기본 자료형의 형변환 Kotlin의 기본 자료형들은 기본적으로 변수에 대입할 때 자동 형변환을 지원하지 않는다. 예를 들어, Java에서는 실수형에 정수형을 대입하거나 정수형에 문자형을 대입하려고 하면 자동으로 형변환이 일어나서 다음과 같은 코드가 모두 동작했다. double a = 10; boolean c = a == 10;// true int b = 123; a = b;// OK 하지만 .. 2023. 1. 16.
[Spring Boot] Springdoc 라이브러리를 통한 Swagger 적용 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.7 Kotlin 1.7.21(JDK 11) Springdoc Openapi UI 1.6.11 Springdoc은 무엇인가? 이전에 Spring Boot 프로젝트에 Swagger UI를 적용하는 포스트를 작성한 적이 있다. 해당 포스트를 작성할 당시에는 Swagger UI를 제공하는 라이브러리가 Springfox만 존재하는 줄 알았는데, Springdoc이라는 라이브러리에서도 Swagger UI를 제공한다는 사실을 알게되어 이 포스트를 작성하게 되었다. 최근에는 Springdoc을 사용하는 것이 더 선호된다고 한다. Springfox의 경우에는 2020년 7월 이후로 업데이트가 중단된 반면, Springdoc은 최근까.. 2023. 1. 15.
[Kotlin] 백준 23629 : 이 얼마나 끔찍하고 무시무시한 수식이니 문제 링크 operator.add(it) else -> numbers.add( try { it.toLong() } catch (e: NumberFormatException) { println("Madness!") return@with } ) } } } if (numbers.size != operator.size) { println("Madness!") return@with } var result = numbers.poll() while (operator.isNotEmpty()) { when (operator.poll()) { "+" -> result += numbers.poll() "-" -> result -= numbers.poll() "x" -> result *= numbers.poll() "/" -.. 2023. 1. 14.
[Kotlin] 백준 22234 : 가희와 은행 문제 링크 22234번: 가희와 은행 가희는 창구가 하나인 은행을 운영하고 있습니다. 가희의 은행이 영업을 시작했을 때, 대기 줄에는 손님이 N명 있습니다. [그림 1] 카운터 직원과 N명의 손님 x번 손님에 대한 정보는 x번 손님의 www.acmicpc.net 문제 해설 큐와 정렬을 적절하게 사용해서 풀 수 있는 문제이다. 문제 해결 과정은 다음과 같다. 은행이 영업을 시작했을 때 대기 줄에 있는 \(N\)명의 손님을 순서대로 큐(이하 대기 큐)에 삽입한다. 은행이 영업중일 때 새로 들어온 손님은 별도의 리스트(이하 신규 손님)에 \(C_x\)를 기준으로 오름차순 정렬하여 삽입한다. 이 포스트에서는 손님 클래스에 Comparable을 구현한 후 우선순위 큐를 사용했다. 다음 순서에 따라 \(W\)초 까.. 2023. 1. 13.
[Kotlin] 백준 9080 : PC방 요금 문제 링크 9080번: PC방 요금 현성이는 요즘 LINEAR 2라는 온라인 게임에 빠져있다. PC방에 가서 게임을 즐기는데, 자주 가는 PC방의 요금체계는 다음과 같다. 일반 요금으로 시간당 1000원 씩을 받으며, 야간 정액을 끊으면 5000원 www.acmicpc.net 문제 해설 분기에 따라 요금을 계산해야한다. 먼저 계산을 수월하게 하기 위해 시간을 분으로 통합한다. 그리고 분기에 따라 다음의 계산을 수행한다. 현재 시간이 22시~3시면서 남은 플레이 시간이 5시간 이상인 경우 : 야간 정액이 이득이기 때문에 8시가 될 때까지 남은 플레이 시간을 모두 소진하고 요금에 5천원을 추가한다. 그 외의 경우 3시~8시인 경우 : 남은 플레이 시간이 5시간 이상이더라도 야간 정액을 이용할 수 있는 시간이.. 2023. 1. 12.
[JUnit5] DB호출 테스트 중 발생한 No ParameterResolver registered for parameter in constructor 에러 해결 에러 발생 배경 JUnit5로 DB 호출 테스트를 하는 도중에 다음과 같은 에러가 발생했다. No ParameterResolver registered for parameter [com.settlement.mapper.TestMapper testMapper] in constructor [public com.settlement.controller.TestController(com.settlement.mapper.TestMapper)]. org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [com.settlement.mapper.TestMapper testMapper] .. 2023. 1. 11.
[Kotlin] 백준 21773 : 가희와 프로세스 1 문제 링크 21773번: 가희와 프로세스 1 1초일 때 부터 4초일 때 상황을 그림으로 나타내면 아래와 같습니다. 아래 그림에서 주황색은 특정 시점에 스케쥴러가 선택한 프로세스를 의미합니다. www.acmicpc.net 문제 해설 우선순위 큐와 Comparable 인터페이스를 구현한 클래스를 사용하여 답을 찾아야 한다. 문제를 해결하는 과정은 다음과 같다. 각 프로세스의 우선순위가 같다면 id가 낮은 순으로, 다르다면 우선순위를 높은 순으로 정렬하도록 Comparable 인터페이스를 구현한 클래스를 선언한다. 우선순위 큐에 입력을 토대로 생성한 프로세스 객체를 모두 삽입한다. 우선순위 큐의 Root 요소를 꺼내어 다음 연산을 수행한다. null이라면(= 스케줄러가 비어있다면) 반복문을 종료한다. 꺼낸 프.. 2023. 1. 10.
[Kotlin] 백준 2757 : 엑셀 문제 링크 2757번: 엑셀 입력은 여러 줄이며, RnCm형태이다. n은 행 번호 (1 2023. 1. 9.