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

2023/0126

[Kotlin] 백준 23309 : 철도 공사 문제 링크 23309번: 철도 공사 첫 번째 줄에 공사를 시작하기 이전에 있는 역의 개수를 나타내는 양의 정수 $N$과 공사 횟수를 나타내는 양의 정수 $M$이 주어진다. ($1 \le N \le 500\,000$, $1 \le M \le 1\,500\,000$) 두 번째 줄에는 공사 www.acmicpc.net 문제 해설 시간 초과 때문에 골머리를 썩힌 문제다. 분류상으로는 연결 리스트 문제인데 그렇다고 연결 리스트를 사용할 수는 없다. 연결 리스트의 경우 탐색하는데 걸리는 시간 복잡도가 \(O(n)\)인데, \(500,000 \times 1,500,000=7500\)억이 되어 너무 많은 시간이 걸리기 때문이다. 따라서 훨씬 효율적인 탐색 방법이 필요하다. 결국 배열을 사용하기로 했다. 역 고유 번호를.. 2023. 1. 19.
로지텍 MX Master 3S 후기 최근 작업을 하면서 가로로 길게 늘어진 코드를 볼 일이 많아지다보니 가로 스크롤에 대한 필요성을 느끼게 되었다. 물론 Shift를 누른채로 스크롤하면 가로스크롤이 되긴 하지만 왼손까지 사용해야 하다보니 영 익숙해지지 않는 방법이었다. 그러다보니 가로휠이 있는 마우스를 찾게 되었는데 그러다가 발견한 것이 로지텍 MX Master 3S였다. 사실 그전까지 마우스도 바꿀까 생각하면서도 바꾸지 않은 가장 큰 이유가 클릭음 때문이었다. 개인적으로 마우스 클릭음을 별로 좋아하지 않기 때문에 기존에 별다른 기능성은 갖추지 않았지만 거의 무소음에 가까울 정도로 조용한 마우스를 쓰고 있었는데 필요에 의해서 찾아본 기능성 마우스들은 모두 클릭음이 그대로 나는 경우여서 마우스를 바꿀 생각이 선뜻 들지 않았다. 그러다가 발견.. 2023. 1. 19.
[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.