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

Kotlin162

[Kotlin] 백준 25497 : 기술 연계마스터 임스 문제 링크 25497번: 기술 연계마스터 임스 $1$, $2$, $S$ - $K$, $2$로 스킬을 성공적으로 총 4번 사용했다. www.acmicpc.net 문제 해설 이전에 많이 나왔던 괄호 짝 맞추기와 비슷하게 스택을 활용하는 문제이다. 연계 기술 LR과 SK의 짝을 맞춰서 기술 성공 횟수를 카운트해야 하는데, 문제에 연계 기술을 사용할 때 사전 기술과 본 기술 사이에는 다른 기술을 사용해도 연계가 정상적으로 이루어진다는 언급이 있다. 즉, LSRK이나 SLKR 등과 같이 L, R, S, K가 섞여있어도 상관없다는 것이다. 이를 구현하기 위해 LR의 짝을 맞출 스택과 SK의 짝을 맞출 스택, 총 2개의 스택을 선언하여 문제를 해결한다. 연계 기술은 사전 기술과 본 기술이 모두 성공해야 1회로 카운트.. 2023. 1. 6.
[Kotlin] 백준 17952 : 과제는 끝나지 않아! 문제 링크 17952번: 과제는 끝나지 않아! 성애는 이번 학기에 전공을 정말 많이 듣는다. 이로 인해 거의 매일을 과제를 하면서 보내고 있다. 그런데도 과제가 줄어들 기미가 보이지 않는데, 바로 분단위로 과제가 추가되고 있기 때문이 www.acmicpc.net 문제 해설 문제의 규칙 1, 2번에 의해 스택을 사용하면 된다는 것을 알 수 있다. 과제의 점수와 남은 시간을 나타내는 객체를 담는 스택을 선언한 후 입력에 따라 스택에서 연산을 진행한다. 0이 입력되어 과제가 주어지지 않았다면 스택의 가장 윗부분 과제의 남은 시간을 1 줄인다. 1이 입력되어 과제가 주어졌다면 스택에 새로운 과제를 추가한다. 이 때, 과제를 받자마자 바로 시작하기 때문에 과제의 남은 시간에서 1을 뺀 값을 추가해야 한다. 각 연.. 2023. 1. 5.
[Kotlin] 백준 18917 : 수열과 쿼리 38 문제 링크 18917번: 수열과 쿼리 38 3번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1, 4]이다. 6번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1, 4, 1]이다. 10번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1]이다. www.acmicpc.net 문제 해설 수열, 배열이라는 말이 있어서 실제로 리스트를 만들어서 구현하려고 할 수 있는데 함정이 있다. 쿼리의 개수가 최대 50만개이기 떄문에 실제 리스트에 25만개의 요소를 추가하고, 합이나 XOR 결과를 25만번 출력하게 되면 \(250,001\times250,000=62,500,250,000\)가 되어 약 625초의 시간이 걸리게 된다. 따라서, 실제 리스트를 구현하지 않고 답을 구해야 한다. 문제에서 요구하는 출력은 모든 .. 2023. 1. 3.
[SSL] 외부 API 호출 중 발생한 unable to find valid certification path to requested target 에러 해결 에러 발생 배경 프로젝트 진행 중 외부 API를 호출하여 받아온 결과값을 가공해야할 일이 생겼다. 그래서 WebClient를 사용하여 외부 API를 호출하고 가공하여 진행하려고 했는데 다음과 같은 에러가 발생했다. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuil.. 2023. 1. 2.
[Spring Boot] Scheduler를 사용하여 정해진 시간마다 메소드 실행시키기 목차 기본 환경 IntelliJ Ultimate 2022.3 Spring Boot 2.7.6 Kotlin 1.7.21(JDK 11) MySQL 8 Swagger 3.0.0 MyBaitis 2.3.0 Spring Boot 프로젝트에 Swagger 3.0.0을 적용하는 방법, MyBatis 설정 방법은 아래 포스트를 참고하면 된다. [Spring Boot] Kotlin 기반 Spring Boot 프로젝트에 Swagger 3.0.0 적용하기 [Oracle] Spring Boot 프로젝트에서 Mybatis 세팅하기 with Kotlin 개요 프로젝트를 진행하다보면 정해진 시간마다 특정 동작을 수행해야할 때가 있다. 이 때 Spring Boot에서 제공하는 Scheduler를 사용하면 손쉽게 정해진 시간에 특정 .. 2022. 12. 30.
[Kotlin] 백준 1490 : 자리수로 나누기 문제 링크 1490번: 자리수로 나누기 첫째 줄에 어떤 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해설 문제에서 이야기하는 N의 0이 아닌 모든 자리수로 나누어 떨어진다는 말은 곧 N의 0이 아닌 모든 자리수의 최소 공배수로 나누어 떨어진다는 말과 같다. 따라서 가장 먼저 0이 아닌 모든 자리수의 최소 공배수를 구해야 한다. 최소 공배수는 최대 공약수를 이용하여 구할 수 있고(코드의 lcm 함수), 최대 공약수는 유클리드 알고리즘을 사용하여 구할 수 있다(코드의 gcd 함수). 최소 공배수를 구했다면 N으로 시작하면서 최소 공배수로 나누어 떨어지는 수를 탐색해야 한다. 이 부분은 N에 10의 거듭제곱을 곱해가면서 반복문으로 나누어 떨어.. 2022. 12. 29.
[Kotlin] 백준 17390 : 이건 꼭 풀어야 해! 문제 링크 17390번: 이건 꼭 풀어야 해! [2, 5, 1, 4, 3]을 비내림차순으로 정렬하면 [1, 2, 3, 4, 5]이다. www.acmicpc.net 문제 해설 누적합과 부분합에 대한 기본적인 문제에 정렬이 추가되었다고 볼 수 있다. 입력 받은 배열을 오름차순으로 정렬한 후 각 인덱스에 대한 누적 합 배열을 생성하여 테스트 케이스 별로 \(L\)과 \(R\) 사이의 부분 합을 출력해주면 된다. Code import java.util.StringTokenizer fun main() = with(System.`in`.bufferedReader()) { val bw = System.out.bufferedWriter() val (n, q) = readLine().split(' ').map { it... 2022. 12. 28.
[Kotlin] 프로그래머스 : 테이블 해시 함수 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 문제를 해결하기 위해 가장 먼저 배열을 조건에 맞게 정렬해야한다. 2번 조건에 col번째 컬럼의 값을 기준으로 오름차순 정렬하고, 값이 동일하면 첫 번째 컬럼의 값을 기준으로 내림차순 정렬하라는 언급이 있으므로 data를 해당 조건에 맞게 정렬한다(코드의 3번째 줄). 이후 row_begin번째 튜플부터 row_end번째 튜플까지의 \(S_i\)를 구하여 별도의 배열 또는 리스트에 저장한다(코드의 4~11번째 줄). 마지막으로 각 \(S_i\)에 대하여 XOR 연산을 수행하여 반환한다. .. 2022. 12. 28.