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

분류 전체보기222

[Kotlin] 백준 1283 : 단축키 지정 문제 링크 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 문제 해설 문제의 로직 자체는 여러울 것이 없다. 단축키를 저장할 Set을 선언한 후 단축키를 지정하는 방법을 순서대로 진행하며 지정되는 단축키를 Set에 삽입하고, 지정된 단축키에 대괄호를 씌워서 출력하는 것을 반복하기만 하면 된다. 다만, 단축키는 대소문자를 구분하지 않으므로 Set에 단축키를 삽입할 때 대문자 또는 소문자로 통일해야 한다. 세부적인 로직은 다음과 같다. 각 줄로 입력받은 옵션의 이름을 공백을 구분자로 분리하여 각 단.. 2023. 1. 18.
[Spring Boot] 스프링부트 3.0.0 이상 버전을 사용하려고 할 때 빌드 과정부터 에러가 나는 경우(Kotlin/Java 동일) 작성일 기준으로 Spring Initializr를 사용하여 스프링 부트 프로젝트를 생성할 때 3.0.0 이상인 버전과 2.7.X 버전 중에서 선택할 수 있다. 아직은 2.6.X나 2.7.X 버전을 사용하는 경우가 많으나, 언젠가는 3.0.0 이상인 버전을 사용하게 되는 경우가 더 많아질 수가 있다. 하지만 Java 버전을 국내에서 주로 사용하는 11이나 1.8로 설정하고 3.0.0 이상인 버전의 스프링 부트 프로젝트를 생성하면 최초 빌드 과정에서부터 에러가 발생하게 된다. 에러 로그의 핵심적인 부분만 추려내면 다음과 같다. Incompatible because this component declares an API of a component compatible with Java 17 and the con.. 2023. 1. 17.
[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.