Best Time to Buy and Sell Stock Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com - 문제 내용 : 주어진 기간동안 단 한번의 구매와 판매가 가능하다. 최대의 이익값을 구해라 - 접근 방법 가장 낮은 값과 가장 높은 값을 찾아서 그 차를 구하면 된다. 단, 가장 낮은 값은 반듯이 가장 높은 값의 왼쪽에 있어야 한다. Prefix ..
주어진 문자열 또는 숫자열 대상으로 모든 경우의 수를 찾아내는 알고리즘 막상 이런 문제가 눈앞에 보이면 허둥지둥 되다가 시간을 많이 보내다 보니 코드로 남겨 본다. Permutation 은 경우의 수다 첫 글자를 Permutation 기능 내에서 고정시켜 나가면서 순환 시켜야 한다 상기 이미지를 보면 ABC가 들어왔을 경우 A를 고정시키고 BC를 다시 Permutation Method에 넣는 것을 볼수 있다. 해당 Permutation은 마지막 한자리가 남을 때까지 지속하면 된다. 그리고 다시 B를 고정시키고 AC와 C를 고정시키고 BA를 Permutation을 순환 시키는 방식으로 전체 Permutation을 구할 수 있다. function permutation(str, l, r, result = []..
programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr - 문제 내용 : 괄호의 Validation을 확인하고 잘못된 부분을 수정해라 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해..
programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr - 문제 내용 : Run Length Encoding을 하는데 있어서 가장 적절한 길이를 찾아라 - 접근 방법 : 모든 경우의 수를 loop로 돌아서 처리한다 나의 멍청함이 한껏 빛을 발휘하는 문제였다. 문제는 쉽지만 문제의 제한 사항을 정확히 찾아내지 못해서... 1번 나타난 값은 1을 표시하지 않는다 2번부터 9번 나타난 값까지니는 한자리수 더한다. 예) abcabc..
Union Find는 내장 라이브러리가 없어서 필요할 때 많이 만들어서 사용한다. 사용 방법에 따라서 input과 output이 달라지는 문제때문에 그런거 같아 보이긴 한데, 짐작이다. 그래서 조금하게 클래스를 하나 만들어 봤다. Union find는 크게 2개의 기능으로 이루어 진다. Find : 특정 키를 갖고 있는 값의 Root를 찾는다. Union : 2개의 키를 하나의 Root로 합친다. 여기에 하나 더해서 내부에서 사용할 Set을 만드는 기능도 필요한데, 그냥 find 넣으면 set을 만든다 생각하고 만들지 않았다. class UnionFind{ constructor(){ this.map = new Map(); } find(key){ key = JSON.stringify(key); if(!th..
programmers.co.kr/learn/courses/30/lessons/62050 코딩테스트 연습 - 지형 이동 [[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18 programmers.co.kr - 문제 내용 : cost를 갖고 있는 cell로 구성이된 grid 에서 주어진 height 이내의 cell끼리는 이동이 가능하다. 이동이 불가능한 cell들이 존재 하는 zone으로는 사다리를 놓고 이동 할 수 있다. 최소한의 사다리 cost로 모든 cell을 순회 가능한 값을 찾아라. - 접근 방법 :..
Javascript는 Priority Queue 내장함수가 없어서 직접 만들어서 써야 한다. Binary 방식으로 메모리를 관리 한다. 코드를 만들 때 주의 해야 할 것은 1. pop 할때 내부 Array의 사이즈를 항상 1로 유지 하는 것 2. Array 자체의 사이즈가 2일 때는 1상태로 돌려주는 부분이다. class PriorityQ { constructor() { this.arr = new Array(); this.arr.push(''); } push(cost, elem) { this.arr.push([cost, elem]); let curPosition = this.arr.length-1; while (1 < curPosition && this.arr[curPosition][0] < this.a..
Hyper V를 사용하다 보면 disk size가 부족해질 때가 있다. 이때 Disk 사이즈를 extention하는 방법을 정리해보고자 한다. 1. Hyper V의 논리 하드디스크의 사이즈를 늘려준다 컴퓨터 상태가 꺼짐이고 검사점이 삭제 되어있어야 한다. 2. 늘어난 파티션의 크기를 인식 시켜줘야 한다. 안전하게 하기 위해서 안전 모드를 진입했다. Hyper v에서 ubuntu를 시작시키는 시점에 'esc'를 누르면 된다. Booting에 연속적으로 실패하는 경우 'shift' 키를 통해 진입도 가능하다. (grub 진입 대기시간이 늘어난다) Partition Size Extention 3. Root console 진입 www.teknophiles.com/2018/12/09/resizing-the-lin..
입력된 String에 대해서 모든 부분 집합을 찾는 코드이다. 여기서 Set을 썻는데 중복값 제거를 위해 사용했다. 한자만 들어올 경우 들어온 한자만 Set에 담아서 return 한다. 한자 이상일 경우 현재 값을 중심으로, 하기 3가지를 담는다. 현재 값 들어온 값 전체 현재 값 + 들어온 값 전체 담겨진 모든 값을 돌려준다. 예를 들자면 'ab' 2자가 들어왔을 경우 최초 현재 값은 a이고 나머지 값은 b가 된다. b는 한자임으로 즉각 리턴이 되고, 현재값 a 그리고 즉각 리턴된 b를 set에 담는다. 그리고 현재값 a와 합산값 b를 합해서 set에 담음으로써 ['a','b','ab']가 된다. 만약 'c'를 추가로 'cab'라고 하면 현재값 c와 상기 ['a','b','ab']를 더해서 추가 한다...