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

분류 전체보기222

[Oracle Cloud] 오라클 클라우드 VM 인스턴스에 MySQL을 설치하고 원격으로 접속하기 목차 시작하기에 앞서 이전 포스트에서 오라클 클라우드에 VM 인스턴스를 생성하여 원격 접속까지 진행해 보았다. 이번 포스트에서는 이 VM 인스턴스에 MySQL을 설치하고, IntelliJ 또는 DataGrip을 통해 오라클 클라우드 VM 인스턴스에 설치된 MySQL로 연결하는 과정을 다룬다. 오라클 클라우드 VM 인스턴스 방화벽 설정 VM 인스턴스에 DB를 설치하고 외부에서 접속하기 위해선 추가적인 보안 설정을 통해 DB가 사용하는 포트에 접속하는 것을 허용해야 한다. MySQL을 오라클 클라우드에 접속하여 컴퓨트 → 인스턴스에서 MySQL을 설치할 인스턴스를 선택하여 인스턴스 세부정보 페이지로 이동한다. 이후 인스턴스 정보에서 기본 VNIC 아래에 있는 서브넷 설정을 클릭하여 서브넷 세부정보 페이지로 .. 2023. 1. 28.
[Spring/Spring Boot] Service와 ServiceImpl 구조에 대하여 목차 문제 인식 Spring 또는 Spring Boot 예제들을 보면 거의 모든 예제가 위와 같이 Service 인터페이스와 각 서비스 인터페이스에 대한 구현체 클래스로 구성되어 있다. 이러한 구조 자체는 다형성적인 측면에서 보면 절대 잘못된 것이 아니지만, 온라인 상의 거의 모든 예제들, 나아가 회사에서 진행하는 프로젝트에서도 이러한 구조를 무분별하게 사용하는 모습을 보면서 한가지 의문이 생겼다. 어차피 인터페이스와 구현체 클래스를 1:1로 구성할거면 인터페이스 없이 서비스 클래스를 바로 작성하면 되지 않나? 이러한 의문으로 인해 서비스 인터페이스 - 구현체 클래스의 구조가 탄생한 계기에 대해 찾아보게 되었다. Service 인터페이스와 ServiceImpl 구현체 클래스를 나누는 이유 기본적으로 Se.. 2023. 1. 26.
[Kotlin] 백준 23300 : 웹 브라우저 2 문제 링크 23300번: 웹 브라우저 2 첫째 줄에 접속할 수 있는 웹페이지의 종류의 수 N, 사용자가 수행하는 작업의 개수 Q 가 각각 주어진다.(1 ≤ N, Q ≤ 2,000) 둘째 줄부터는 Q개의 작업이 주어지며, 각 작업이 의미하는 바는 다음 www.acmicpc.net 문제 해설 뒤로가기 목록을 저장할 스택과 앞으로가기 목록을 저장할 큐를 각각 만들면 손쉽게 해결할 수 있다. 본 코드에서는 덱을 사용했지만 크게 상관은 없다고 생각한다. 압축 기능은 뒤로가기 목록의 2번째 페이지부터 마지막 페이지까지 이동하면서 이전 페이지와 같으면 제거하는 식으로 구현했다. Code import java.util.StringTokenizer fun main() = with(System.`in`.bufferedRe.. 2023. 1. 26.
[Kotlin] 백준 26597 : 이 사람 왜 이렇게 1122를 좋아함? 문제 링크 26597번: 이 사람 왜 이렇게 1122를 좋아함? 질의응답에 모순이 없고 준성이의 최애 숫자가 무엇인지 정확히 알 수 있으므로 첫째 줄에 I got it!을 출력한다. $3$번째 질의응답을 통해 준성이의 최애 숫자가 무엇인지 정확히 알 수 있으므로 www.acmicpc.net 문제 해설 문제 자체는 평범한 Up&Down 방식의 문제다. 최초 시작값과 끝값을 각각 \(-10^{18}\)과 \(10^{18}\)으로 설정한다. 이후 질의응답에 따라 시작값과 끝값을 변경하는데, 질의 응답에서 주어지는 \(x\)가 기존 시작값보다 작거나 기존 끝값보다 클 수도 있다. 따라서 질의 응답이 \(x\) ^인 경우에는 시작값을 기존 시작값과 \(x+1\) 중 더 큰 값으로 변경하고, \(x\) v인 경우에.. 2023. 1. 25.
[Kotlin] 백준 11444 : 피보나치 수 6 문제 링크 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해설 피보나치 수를 구하는 문제지만 입력이 굉장히 큰 경우다. 이 경우 피보나치 수를 구하는 일반적인 식인 \(F_n=F_{n-1}+F_{n-2}\)을 사용하게 되면 최대 \(10^{18}\)번의 연산을 수행해야 하기 때문에 이 방법은 사용할 수 없다. 문제를 해결하기 위해서는 더 효율적인 방법을 찾아야 하는데, 피보나치 수를 구하는 방법 중에는 도가뉴 항등식(d'Ocagne's identity)이라는 것이 있다. 도가뉴 항등식의 형태는 다음과 같다. $$F_{m+n}=F_{m-1}F_n+F_mF_{n+1}$$ 여기서 \(m.. 2023. 1. 24.
[Kotlin] 코틀린으로 알고리즘 문제를 풀 때 출력 방식별 속도에 대하여 [Kotlin] 백준 23309 : 철도 공사 문제 링크 23309번: 철도 공사 첫 번째 줄에 공사를 시작하기 이전에 있는 역의 개수를 나타내는 양의 정수 $N$과 공사 횟수를 나타내는 양의 정수 $M$이 주어진다. ($1 \le N \le 500\,000$, $1 \le M \le 1\,500 colabear754.tistory.com 위 링크의 문제풀이에서 BufferedWriter를 사용한 풀이는 시간 초과로 통과에 실패했는데 StringBuilder로 문자열을 하나로 만들어 출력한 풀이는 통과에 성공했다고 얘기한 적이 있다. 기본적으로 코틀린은 자바의 함수와 클래스를 사용하여 출력하기 때문에 백준님이 측정한 출력 방식별 속도 측정을 기반으로 문제를 풀고 있었다. 그래서 BufferedWriter.. 2023. 1. 20.
[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.