전체 글221 [Kotlin + Spring Boot] 코틀린 + 스프링부트에서 Slf4j를 사용하여 로그 찍기 목차 서론 자바 + 스프링부트를 사용할 때는 대부분 Lombok을 사용하여 각종 어노테이션으로 객체나 메소드들을 생성하게 된다. Slf4j의 Logger 객체 역시 클래스 위에 Lombok의 @Slf4j를 붙여주는 것으로 편하게 생성할 수 있다. 그러나 코틀린에서는 아직 Lombok을 제대로 지원하지 않는다. 따라서 @Slf4j 어노테이션을 사용하여 Logger 객체를 생성하는 방법 역시 사용할 수 없다. 그렇다면 직접 Logger 객체를 생성해야 하는데 코틀린 + 스프링부트에서 Slf4j의 Logger 객체를 생성하는 방법이 여러 가지 있어서 한 번 정리해보려고 한다. Logger 객체 생성방법 기본 Slf4j의 Logger 객체를 생성하는 가장 기본적인 방법은 아래와 같이 클래스 내부에서 Logger.. 2023. 4. 6. [Kotlin] 백준 2812 : 크게 만들기 문제 링크 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 해설 N자리 수에서 K개의 숫자를 지워서 만든 가장 큰 수라는 것은 결국 앞자리 숫자가 뒷자리 숫자보다 커야한다는 것을 의미한다. 이를 처리하기 위해 스택을 사용할 수 있다. 입력으로 주어진 수를 각 자리수의 배열로 생각하여 진행한다. 앞에서부터 각 자리의 숫자를 스택에 삽입한다. 이 때, 스택에 숫자를 삽입하기 전에 이미 삽입된 숫자들을 순차적으로 확인하여 현재 삽입해야 할 숫자보다 작은 숫자를 모두 제거하고, 제거한 숫자의 개수를 기록한다. 제거한 숫자의 개수가 K개가 되었다면 남은 모든 숫자를 스택에 삽입한다. 모든 .. 2023. 4. 4. [Kotlin] 백준 16496 : 큰 수 만들기 문제 링크 16496번: 큰 수 만들기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 리스트에 포함된 수가 주어진다. 수는 공백으로 구분되어져 있고, 1,000,000,000보다 작거나 같은 음이 아닌 정수 이다. 0을 제외한 나 www.acmicpc.net 문제 해설 기본적으로는 정렬을 활용한 문제지만 정렬 기준을 어떻게 할지가 관건인 문제라고 볼 수 있다. 수를 이어붙여서 더 큰수를 만들기 위해서는 수를 문자열로 다뤄야 한다. 정렬 기준자체는 굉장히 간단하다. s1과 s2가 있을 때, s1 + s2와 s2 + s1 중 더 큰것이 우선적으로 오도록 정렬하면 된다. 예를 들어 123과 45가 있을 때 12345보다 45123이 더 크기 때문에 [45, 123]으로 정렬할 수.. 2023. 4. 3. [Kotlin] 코틀린으로 정렬 관련 문제를 풀 때 사용하는 배열이나 리스트를 정렬하는 메소드의 종류 및 각 메소드의 차이 목차 개요 기본적으로 코틀린에서는 배열도 객체로 취급되어 sort()와 같은 메소드를 사용할 수 있다. 그런데 이들 메소드들은 종류에 따라 약간의 차이가 있고, 메소드를 호출한 객체의 타입과 메소드의 종류에 따라 성능도 차이난다. 백준 - 수 정렬하기 5 문제를 푸는데 그냥 단순한 정렬 문제라고 생각했다가 정렬 메소드의 종류에 따라 TLE가 나기도 했고 AC가 나오기도 했다. 이들 메소드들 사이에 무슨 차이가 있길래 무엇을 쓰느냐에 따라 결과가 다르게 나타나는지 궁금해서 내부 구조를 확인해봤는데 생각보다 많은 차이가 있었다. Kotlin 정렬 메소드의 종류 코틀린에서 배열이나 리스트를 정렬하는 메소드는 작동 방식과 결과 타입에 따른 3가지, 정렬 방법에 따른 3가지로 구분할 수 있다. 작동 방식과 결과 .. 2023. 3. 31. [Kotlin] 백준 24389 : 2의 보수 문제 링크 24389번: 2의 보수 컴퓨터는 뺄셈을 처리할 때 내부적으로 2의 보수를 사용한다. 어떤 수의 2의 보수는 해당하는 숫자의 모든 비트를 반전시킨 뒤, 1을 더해 만들 수 있다. 이때, 32비트 기준으로 처음 표현했던 수와 www.acmicpc.net 문제 해설 문제를 보자마자 숏코딩 욕심이 나서 풀어본 문제이다. 컴퓨터가 뺄셈을 처리할 때 2의 보수를 사용하는데, 이로 인해 뺄셈은 2의 보수의 합으로 나타낼 수 있다. 예를 들어 \(10-3\)이라는 식이 있을 때 이는 \(10+(-3)\)으로도 표현할 수 있다. 위의 내용과 종합해보면 \(-3\)이 \(3\)의 2의 보수가 되는 것이다. 즉, 어떤 수 \(n\)의 2의 보수는 \(-n\)과 같다. 두 수의 서로 다른 비트 수는 두 수를 XO.. 2023. 3. 30. [Kotlin/JPA] 코틀린과 JPA를 함께 사용할 때 추가적으로 설정해야 하는 것들과 Data class 목차 개요 JPA는 자바 진영에서 DB와 연동하기 위해 사용하는 기술 중 하나이다. 자바와 100% 호환되는 코틀린의 특성상 JPA 역시 사용할 수 있긴 하지만 기본적으로 자바에 맞춰진 기술이다 보니 코틀린과 JPA를 함께 사용할 때 문제없이 사용하기 위해선 추가적으로 설정해야 할 것들이 있다는 것을 알게 되었다. 이 글에서는 코틀린과 JPA를 함께 사용할 때 추가적으로 설정해야 하는 것들과 그 외의 주의사항에 대해 정리한다. JPA의 구현체는 가장 많이 사용되는 하이버네이트를 따른다. JPA의 Entity가 갖는 요구사항 우선 왜 이러한 설정을 사용해야 하는지, 또 왜 이런 사항을 주의해야 하는지를 이해하기 위해선 JPA의 엔티티가 갖는 요구사항을 알 필요가 있었다. 하이버네이트 사용자 가이드에서 이야.. 2023. 3. 29. [Java] HashMap vs Hashtable(feat. ConcurrentHashMap) 목차 서론 스터디를 진행하던 도중 Hashtable에 대한 이야기가 조금 나왔었다. 사실 이전까진 Hashtable이라는 것이 있다는 것만 알고 Map의 구현체로 대부분 HashMap을, 아주 가끔 TreeMap을 사용했는데, Hashtable은 HashMap과 비슷하게 Key - Value 쌍의 Map 구현체인 것은 동일하지만 세부적인 내용에서 차이가 있는 구조라고 한다. 이 글에서는 HashMap과 Hashtable의 차이에 대해 조금 다뤄보려고 한다. HashMap HashMap은 자바 1.2에서 등장한 Map 인터페이스의 구현체이다. 기본적으로 HashMap은 동기화를 지원하지 않기 때문에 다중 스레드 환경에서는 동시성 이슈가 발생할 수 있다. 이러한 이유로 인해 HashMap에서는 연산 도중 M.. 2023. 3. 27. [Kotlin] 백준 22252 : 정보 상인 호석 문제 링크 22252번: 정보 상인 호석 암흑가의 권력은 주먹과 정보에서 나온다. 주먹은 한 명에게 강하고, 정보는 세계를 가지고 놀 수 있기 때문에 호석이는 세상 모든 정보를 모으는 "정보 상인"이 되고 싶다. 정보 상인은 정보를 www.acmicpc.net 문제 해설 HashMap과 우선순위 큐를 사용하면 문제를 수월하게 해결할 수 있다. HashMap의 Key에 정보 고릴라의 이름을, Value에 정보 고릴라가 가진 정보들의 가치가 내림차순으로 정렬된 우선순위 큐를 저장한다. 여기까지 하면 사실상 문제 풀이는 끝난 것이나 다름 없다. 1번 쿼리의 경우에는 Map에 저장되지 않은 정보 고릴라의 이름이 나오면 새로운 우선순위 큐를 생성하여 Map에 저장하고 정보들의 가치를 저장하면 된다. 2번 쿼리의 .. 2023. 3. 23. 이전 1 ··· 8 9 10 11 12 13 14 ··· 28 다음