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

분류 전체보기222

[Kotlin] 백준 1092 : 배 문제 링크 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 문제 해설 문제를 풀기 위해 먼저 크레인의 무게 제한과 박스의 무게를 내림차순으로 정렬한다. 가장 짧은 시간 내에 모든 박스를 배로 옮기기 위해선 아직 남아있는 상자 중에 각 크레인이 옮길 수 있는 가장 무거운 상자를 옮겨야 한다. 구현 과정은 다음과 같다. 크레인의 무게 제한과 박스의 무게를 내림차순으로 정렬한다. 크레인의 가장 큰 무게제한보다 무거운 상자가 있다면 즉시 -1을 출력하고 프로그램을 종료한다. 그 외의 경우에는 현재 옮.. 2022. 12. 24.
[Spring Boot] Kotlin 기반 Spring Boot 프로젝트에서 파일 업로드하기 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) Oracle 11g Swagger 3.0.0 mybaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법은 아래 포스트를 참고하면 된다. [Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 개요 예제로 블로그에 글을 작성할 때 제목과 내용, 카테고리 일련번호와 파일 하나를 업로드하여 작성하는 API를 구현한다. Swagger를 통해 테스트하기 때문에 별도의 화면은 구성하지 않는다. Domain 블로그의 글과 관련된 BoardDTO를 작성한다. data class BoardDTO(.. 2022. 12. 23.
[Kotlin] 백준 1456 : 거의 소수 문제 링크 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 문제 해설 수의 범위가 주어졌을 때 해당 범위 내에서 소수의 거듭제곱이 되는 수의 개수를 찾는 문제다. 범위가 최대 \(10^{14}\)이지만 소수는 최대 \(10^{7}\) 범위 내에서만 찾으면 된다. 소수의 거듭제곱이 범위 내에 포함되는지를 찾아야하는데 \(10^{7}=\sqrt{10^{14}}\)이므로 \(10^7\)을 초과하는 소수는 거듭제곱을 하면 범위를 벗어나기 때문이다. 따라서 우선 에라토스테네스의 체를 이용하여 \(\sqrt{B}\) 이하인 소수를.. 2022. 12. 23.
[Spring Boot] Swagger를 적용했을 때 리다이렉트 에러가 발생하는 경우(javax.servlet.ServletException) Swagger2를 사용할 땐 컨트롤러의 메소드에서 "redirect:/swagger-ui.html"를 반환하여 Swagger 문서로 리다이렉트 해도 아무 문제가 없었는데 Swagger3을 사용하니 같은 방법을 썼을 때 javax.servlet.ServletException: Could not resolve view with name 'redirect:/swagger-ui/index.html' in servlet with name 'dispatcherServlet'라는 에러가 발생했다. 대충 요약하자면 redirect:/swagger-ui/index.html라는 서블릿이 없다는거다. 구글링을 해보니 Swagger 설정을 하는 Config 클래스에 다음 코드를 추가하면 된다고 한다. // Kotlin @Be.. 2022. 12. 22.
Kotlin 기본 문법 10 : 커스텀 getter와 setter 목차 개요 Kotlin의 클래스 역시 Java와 마찬가지로 각 필드에 대한 getter와 setter가 존재한다. 이번 포스트에서는 Kotlin 클래스의 기본적인 getter와 setter 및 Kotlin 클래스의 커스텀 getter와 setter에 대해 정리한다. Kotlin 클래스의 기본 getter와 setter Kotlin에서 클래스를 작성하는 방법은 Kotlin 기본 문법 6 : 클래스와 접근 지정자 포스트에서 이미 다룬바가 있다. Kotlin 클래스의 필드는 기본적으로 Java와 달리 별도의 getter, setter 메소드로 접근하지 않는다. 대신 Kotlin에서는 클래스의 생성자를 작성하면 필드의 종류(val, var)에 따라 자동으로 getter와 setter를 생성해주고, 일반적으로 필.. 2022. 12. 22.
[Kotlin] 백준 25192 : 인사성 밝은 곰곰이 문제 링크 25192번: 인사성 밝은 곰곰이 첫번째 새로운 사람이 들어온 뒤 pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤 pjshwa와 chansol은 다시 곰곰티콘으로 인사했다. www.acmicpc.net 문제 해설 Set을 사용하여 풀 수 있는 문제다. 새로운 사람이 입장하고 각 유저들이 처음 입력하는 채팅은 모두 곰곰티콘 인사가 된다. 따라서 채팅을 입력한 유저의 닉네임을 Set에 저장하는 것에 성공하면(=채팅을 처음 입력한 유저라서 곰곰티콘으로 인사한 경우라면) count를 1 증가시킨다. ENTER가 입력되면 Set을 초기화하고 같은 과정을 수행하면 된다. ENTER가 입력되면 새로운 Set으로 초기화하는 방법을 사용했다. c.. 2022. 12. 21.
[Kotlin] 백준 14277 : 등차 수열과 등비 수열 문제 링크 14277번: 등차 수열과 등비 수열 예제 4의 경우에 4, 20, 100, 452, 476, 500, 524, 548, 572, 596이 정답이다. www.acmicpc.net 문제 해설 문제만 보면 "그냥 등차 수열과 등비 수열을 set에 저장하고 크기를 출력하면 되는게 아닌가?" 싶지만 입력 범위에 함정이 있다. u의 범위가 \(10^{12}\)까지, 즉 1조라는 큰 숫자이기 때문에 a와 b가 1이고 u가 \(10^{12}\)이라면 등차 수열을 구하는데만 10,000초의 시간이 걸리게 될 뿐만 아니라 1조개의 Long타입을 set에 저장하게 되므로 7TB가 넘는 엄청난 양의 메모리를 차지하게 된다. 그렇기 때문에 좀 더 수학적인 방법의 접근이 요구된다. 등차 수열에 포함되는 1 이상, u.. 2022. 12. 21.
[Oracle] Spring Boot 프로젝트에서 Mybatis 세팅하기 with Kotlin 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) Oracle 11g Swagger 3.0.0 mybaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법은 아래 포스트를 참고하면 된다. 2022.12.06 - [Spring Boot] - Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 Mybatis는 무엇인가? Mybatis는 Java에서 관계형 데이터베이스를 사용하는 개발을 더욱 수월하게 해주는 프레임워크로, 기존의 JDBC를 사용한 코드를 별도의 XML 파일로 분리하여 자바 코드상의 SQL을 모두 제거하고 관리를 편하게 해준다는 장점을 갖는다... 2022. 12. 20.