Local에서 MongoDB를 개발하다가 보면 다음과 같은 오류가 날 수도 있다. 2021-06-22 16:54:47.086 INFO 7212 --- [ main] org.mongodb.driver.cluster : No server chosen by com.mongodb.async.client.ClientSessionHelper$1@68868328 from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms b..
이진검색은 많은 곳에서 사용되는데 의외로 Lower Bound와 Upper Bound 문제가 나오면 정확한 코드를 만들지 못해서 쉬운 풀이임에도 틀리는 경우가 많고 오류가 많이 난다. 그래서 이번 기회에 Bound에 대해서 정리 하려고 한다. Binary Search 이진 탐색은 가장 유명한 탐색 기법이다. 만들기도 쉽고 직관적이다. 아주 쉬운 내용이기 때문에 간단히만 설명 하겠다. Target이 3이고 길이 6의 array가 있다. 3을 찾기 위해서는 $ O(N) $으로 왼쪽에서 오른쪽으로 값을 찾는 방법도 있지만 Binary Search를 하면 $ O(logN) $ 으로 처리가 가능하다. 이를 처리하기 위한 핵심은 mid를 찾는데 있다. 일반적인 mid를 찾는 기법은 let mid = Math.flo..
Spring Boot 또는 Spring MVC를 통한 Profile 설정 방법은 다음과 같이 대표적으로 3가지 방법을 제공한다. application.yml application.properties java option application.yml yml 문법을 사용하고 각 profile 분리는 --- 이렇게 3개의 하이픈을 사용함으로써 profile section을 분리한다. application-.yml 방식으로 분리를 해도 괜찮다. Spring 2.4이후 기준으로 profile을 설정한 파일이다. spring: profiles: active: dev --- spring: data: mongodb: host: localhost port: 27018 database: local config: activ..
Remove Invalid Parentheses 문제 내용 '(' 와 ')' 로 구성된 문자열이 있다. 해당 문자열을 중괄호라고 부를때 '(' 와 ')'의 pair가 맞게 할 수 있는 최소한의 delete가 된 가능한 모든 문자열을 결과로 return 해라 단, 중간에 문자가 있을 수 있다. 접근 방법 일반적인 Parentheses 문제를 이용해서 문제를 해결해 나가야 한다. 우선 validation check에 대해서 생각해 보자. 기본적으로 Parentheses 문제는 '('의 갯수가 무조건 ')'의 갯수보다 많은 경우 Validation이 된다고 생각해야한다. 2020.09.15 - [Problem Solving] - 괄호 변환 문제에서 getBalancedCount 부분을 참고하자. 이 내용을 기..
Intellij 2019, Intellij 2020 버전에서 다음과 같이 Profile을 못 읽어 올 때가.. 솔직히 모든 경우 이랬다. No active profile set, falling back to default profiles: default 위와 같이 application.properties나 application.yml에 profile을 active 한다고 해도 gradle의 bootrun이 아닌 intellij에서 제공하는 Run 기능으로 진행 할 경우 위와 같이 이를 인식 하지 못한다. 정확히 말하자면 Run으로 Spring Boot를 실행하면 application.properties가 존재하는 resources 디렉토리 자체를 인식 하지 못하는 것이다. 아래 보면 bootRun을 Gr..
아 mongodb local에 까는데 뻘짓 하는 것을 확인 하려면 이 아래 접음을 열면 됩니다. 더보기 Windows 설정 > 정보 > 고급시스템 설정 https://docs.mongodb.com/compass/current/install/ https://www.microsoft.com/en-us/download/confirmation.aspx?id=30653 여기까지 해보고 local에 zip으로만 깔수 없다는 사실을 알게 되었다. https://jira.mongodb.org/browse/SERVER-26028?focusedCommentId=3093977&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-309..
Regular Expression Matching 문제 내용 s와 p라는 문자열이 주어진다. p는 일반 영문자와 아래 2개의 char로 구성될 수 있다. `.` : 단 한개의 모든 char 종류와 동일하다 `*` : * 직전에 오는 char가 0개 이상 존재 할 수 있다. s와 p가 동일한 문자열이 가능한지 비교하라 접근 방법 가장 쉬운 방법 부터 생각을 해보자 `*` wildcard가 없는 경우를 생각하자. 단순히 왼쪽에서 오른쪽으로 s와 p의 index를 하나씩 움직여 가면서 모든 문자열이 동일한지 확인 하고 만약에 동일하지 않은 것이 나오면 false를 return 하면된다. 주의 해야할 것은 `.`이 모든 문자열을 대치 할 수 있다는 것이다. 그러면 wildcard가 들어간다고 생각해 보자. 이 ..
Critical Connections in a Network 문제 내용 노드와 nod-directed edges가 주어졌을 때, 어떤 edge가 없어지면 노드 그룹이 분리되게 되는 지 찾아라 접근 방법 이 문제는 하기 링크의 문제와 그 접근 방법이 같다. 2020.08.31 - [Problem Solving] - 1568. Minimum Number of Days to Disconnect Island 2가지의 문제 해결 방법이 있다. edge를 삭제하고 dfs를 순회한다. 타잔(tarjan) 알고리즘을 이용해서 critical edge를 찾는다. 우선 첫번째 방법을 알아보자 Edge를 삭제하고 dfs를 순회한다. 가장 접근 하기 쉬운 방법이다. 이렇게 생긴 문제가 주어졌다고 생각해 보자. 한눈에 보기에 ..
Sliding Window Maximum 문제 내용 1차원의 숫자 배열 Array가 주어졌을 때 일정한 범위의 widow size 만큼의 길이 안에서 최대 Number 값을 찾아라 접근 방법 2가지로 접근이 가능한다. Doubled Array List Dynamic Programming Doubled Array List로 접근을 알아보겠다. Doubled Array List는 java 경우 Deque이용해서 Head와 Tail을 O(1)의 시간으로 접근 가능하고 Head, Tail 삭제도 O(1)로 가능하다. 단, removeFirstOccurence 같은 경우는 값을 찾아야 해서 O(N)의 시간이 걸린다. Deque를 사용하는 경우 javascript는 직접 구현을 해줘야 하는게 있어서 간단히 그림으로..