Intellij cygwin 연동하기
intellij 2022. 1. 14. 17:09

Intellij 계열의 IDE를 이용할 때 cygwin을 default Teminal로 사용하고 싶을 수 있다. IDE에서 Terminal 최우측 화살표를 클릭한다. Settings를 선택한다. 위와 같은 setting화면이 나오면 "c:\cygwin64\bin\sh" -lic "cd ${OLDPWD-.}; bash" cygwin의 bash.exe path를 설정해 주고 Apply를 선택한다. 이제 tab에서 '+'를 클릭하면 cygwin teminal이 작동 되는 것을 확인 할 수 있다.

Kubernetes Docker alpine cpu memory process monitoring
AWS 2022. 1. 13. 01:01

알고자 하는 것 alpine os를 기반으로 하는 docker image가 kubernetes에서 실행되면서 이미지 내 cpu와 memory를 각 프로세스가 얼마나 점유하는지를 확인 하고자 한다. 주요 환경 kubeadm 및 kubectl이 설치가 완료 되어있고 node는 한개 이상이 있다고 전제한다. k9s의 기초 이야기는 여기서 하지 않을 예정이다. Spring Boot Starter 를 만든다 alpine os에 어떤 프로세스가 cpu와 memory를 얼마나 먹는지 알아보기 위해서, java를 사용하는 spring boot sample app을 만들어 보고자 한다. curl https://start.spring.io/starter.tgz \ -d dependencies=web,actuator \ -..

Longest Increasing Subsequence
Problem Solving 2021. 10. 3. 19:01

Longest Increasing Subsequence 문제 내용 주어진 Array에서 가장 긴 연속된 순서의 길이를 찾아라. Array내의 Position을 수정할 순 없지만, 중간에 있는 값을 삭제 할 수는 있다. 접근 방법 Brute Force 상위와 같은 배열이 주어졌을 경우 다음과 같이 Array를 찾을 수 있다. 9보다 작은 값이 이전에 있었는가? 없었다면 dp 1을 유지한다. 2보다 더 작은 값이 있는가? 없음으로 유지한다. 5보다 작은 값이 있는가? 2가 더 작았다. 그럼 2의 dp + 1을 해준다. 3도 같은 방법으로 dp의 값을 올려준다. 7의 경우 2,5,3 중 가장 높은 dp의 값에 + 1을 해준다. 101은 4가 된다. 18도 4가 된다. 위의 방식은 Time Complexity가..

Decode Ways
Problem Solving 2021. 9. 22. 23:44

Decode Ways 문제 내용 대문자 A부터 Z까지를 1부터 26까지의 숫자와 대응시켰을 때 주어진 숫자로 만들어 낼 수 있는 문자의 갯수는 몇개인가? 접근 방법 우선 Brute force 접근의 경우는 모든 경우를 분기 시키는 것이 가능하다. 만약에 '112'가 주어졌다고 하면 'aab','ai','kb' 이렇게 3개의 선택을 할 수 있다. 이 선택의 순서를 dfs방식으로 하게 되면, 최악의 경우 '11111111'

Arithmetic Slices
Problem Solving 2021. 9. 22. 22:03

Arithmetic Slices 문제 내용 number array가 주어진다. 각 number의 연속적인 차가 동일할 경우 부분 집합의 갯수를 return해라 접근 방법 문제 내용을 보면 [1,3,5,7,9] [7,7,7,7] [3,-1,-5,-9] 가 동일한 차를 갖고 있다고 한다. 예를 들어서 [7,7,7,7]은 [0,0,0]의 차를 동일하게 갖고 있다. 이 array는 left : [7,7,7] right : [7,7,7] 전체 [7,7,7,7] 이렇게 3개의 부분 집합을 만들 수 있다. 이 부분 집합의 갯수를 다음과 같이 추상화 해보자. 부분 집합 갯수 구하기 차의 집합을 [a,a] 라고 생각해 보자. 위에서 [7,7,7,7]은 [0,0,0]으로 구성되어 있음으로 이 동일 갑을 'a'라고 치환한 ..

Shortest Path Visiting All Nodes
Problem Solving 2021. 9. 16. 00:14

Shortest Path Visiting All Nodes 문제 내용 주어진 Node를 모두 Visite하는데 얼마의 step이 필요한가? 각 Node는 중복으로 방문이 가능하다. 접근 방법 개인적으로 이해하는데 시간을 오래 끌었다. Youtube나 google을 조회해 봐도 Floyd-Warshall 알고리즘이나 Dijkstra 를 이용한 방법이 검색되었다. 한마디로 이해하기 어렵고 주어진 시간내에 개발하기도 어려웠다. 그래서 Discussion을 찾아보는데 Smart BFS를 사용한 방법으로 본 문제를 풀었다는 이야기를 많이 보았다. 그래서 여기서 말하는 Smart BFS가 무었인지 알아보고 이를 통해서 문제를 풀어보고자 한다. BFS 접근 방법 BFS는 queue를 이용해서 접근 범위를 넓혀가는 방..

Masking을 활용한 DP 문제 풀기 (Partition to K Equal Sum Subsets)
Problem Solving 2021. 9. 12. 23:00

DFS 또는 Backtracking을 하거나 하는 방식으로 문제를 풀게 되면, 완전검색(Exhaustive Search)을 고려하게 된다. 처음 문제를 보았을때 이것이 완전검색을 원하는 것인지 아니면 최적의 P를 찾아낼 수 있는지를 판단하는 것이 중요하다. 가장 쉬운 판단법은 전제사항을 유심히 보는 것이다. 대부분 문제를 보면 숫자의 범위가 0에서 100,000이상의 범위를 갖게 된다. 그런데 이 문제만 이상하게 24, 32이런식으로 매우 작은 수로 범위를 갖는 경우가 나타난다. 이럴때는 완전검색을 고려해볼 필요가있다. 문제를 하나 풀어보면서 Masking과 DP를 어떻게 활용하는지 같이 알아보자. https://leetcode.com/problems/partition-to-k-equal-sum-subs..

Vanilla javascript URL Router 만들기 (web components)
Web 2021. 9. 5. 22:27

Web Component를 주로 이용하게 되는 이유는 Single Page Application을 만들기 위한 용도이다. 사용자는 Page가 변경한다고 생각하지만 Page는 변경되고 있지 않다. 그러다 보니 사용자들에게 익숙한 Browser Navigation Button을 활용하기 어렵다. 이 부분을 해결하기 위해서 windows.history 객체를 통해서 browser url search bar에 url router를 만들어 보고자 한다. 우리가 만들어볼 페이지는 아래와 같다. 최초 접근시에는 root path를 기본으로 하고 각 box를 클릭하면, /page/ 디렉토리 밑에 각 box별 numbering 0에서 부터 3번까지 page를 통해서 page 전환 효과를 나타낼 예정이다. 그리고 back..

Vanilla javascript와 Redux (Web component)
Web 2021. 9. 4. 12:35

앞서 Vanilla javascript로 web component를 통해서 어떻게 Component화 하는지와 어떻게 상태관리를 할 수 있는지 알아보았다. 이제 library를 활용해서 상태관리(state management)를 해보고자 한다. 본 내용을 이해하기 위해서는 아래 내용을 꼭, 읽어 봐야한다. 2021.08.16 - [Web] - 기존 web site를 components 로 다시 만들기 (No State management) 앞서 만들어진 todo 웹사이트를 이용해서 redux를 적용하고자 한다. 기본 source는 아래 https://github.com/theyoung/webcomponents/tree/webComWithStateManagement/statementforwebcompone..