본문 바로가기

분류 전체보기

(90)
vim 여러 줄 주석/문자 추가하기 명령어 모드(ESC)에서 V를 누르면 Visual Mode로 진입한다 원하는 만큼 블록을 설정하고 :를 누르면 '
Kruskal, Prim 알고리즘 Kruskal 알고리즘이란 - greedy method를 이용하여 네트워크(가중치를 간선에 할당한 그래프)의 모든 정점을 최소 비용으로 연결하는 최족 해답을 구하는 것 - greedy method 결정을 해야 할 때마다 그 순간에 가장 좋다 생각되는 것을 선택함으로써, 최종적인 해답에 도달 그 순간에는 최적이지만, 전체적인 관점에서 최적이라는 보장이 없기 때문에 반드시 검증해야 한다 Kruskal 알고리즘은 최적의 해답을 주는 것으로 증명되어 있다 - MST(Minimum Spanning Tree, 최소 비용 신장 트리)가 1)최소 비용의 간선으로 구성됨 2) 사이클을 포함하지 않음 의 조건에 근거하여 각 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택한다 - spanning tree는 모든 간선을..
리눅스에서 실수로 파일 이동/파일 삭제 예방하기 리눅스에서 rm, mv, cp를 하다가 실수로 삭제/덮어쓰기를 하게되고 이전 파일을 잃어버리게 되는 경우가 있다. 그때는 -i 옵션을 주면 삭제/덮어쓰기가 발생할 경우 사용자에게 한번 더 물어본다. 본인이 쓰는 터미널에 맞게 ~/.zshrc나 ~/.bashrc에서 다음 작업을 해준다. alias rm='rm -i' alias mv='mv -i' alias cp='cp -i' 그리고 source ~/.zshrc 해준다. 제대로 alias가 적용되었는지 확인하고 싶으면, 터미널에 alias를 입력하면 alias 설정된 목록이 나타난다.
Greedy 알고리즘이란 Greedy(탐욕, 탐욕법) 알고리즘 - 문제를 해결하는 과정에서 그 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 진행하여, 최종 해답에 도달하는 문제 해결 방식이다 - 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법으로, 각 단계에서의 최선의 선택이 전체적으로도 최선이길 바라는 알고리즘이다 - 따라서 모든 경우에서 통하지 않는다 - 이러한 단점을 극복하는 greedy의 가장 큰 장점은 계산 속도에 있다 - greedy 방법이 통하는 몇몇 문제에서는 최적해를 빠르게 산출해낼 수 있다 예시 활동 선택 문제 한 강의실에서 여러 개의 수업을 하려고 할 때, 한 번에 가장 많은 수업을 할 수 있는 경우를 고르는 것 - [A1, A3, A6, A8]이나 [A1, A3, A7, A9]를 고..
master branch and 'origin/master' have diverged, how to 'undiverge' branches'? git fetch origin git reset --hard origin/master stackoverflow.com/questions/19864934/git-your-branch-and-origin-master-have-diverged-how-to-throw-away-local-com git: Your branch and 'origin/master' have diverged - how to throw away local commits? I have the following message in git: # Your branch and 'origin/master' have diverged, # and have 3 and 8 different commits each, respectively. # (use "..
Binary Search란 Binary Search(이분 탐색, 이진 탐색)이란 - 데이터가 정렬되어 있는(binary search의 주요 조건) 배열에서 특정 값을 찾아내는 알고리즘 - 배열의 중간에 있는 임의의 값을 선택해서, 찾고자 하는 값 X와 비교한다 - X가 중간값보다 작으면 중간값을 기준으로 왼쪽의 데이터를 대상으로, - X가 중간값보다 크면 배열의 우측을 대상으로 다시 탐색한다 - 동일한 과정을 해당 값을 찾을 때까지 반복한다 예시 array =[1, 2, 3, 4, 5, 6] 에서 6을 찾자 step 1 중간값 middle = 3 3과 6을 비교한다 -> 3 5 < 6 step 3 5의 ..
Dynamic Programming이란 Dynamic Programming(동적계획법)이란? 큰 문제를 작은 문제로 나누어 푸는 문제를 말한다. 동적 계획법이라는 말 때문에, 어떤 부분에서 동적으로 프로그래밍이 이루어진다고 생각할 수 있지만, 단지 동적 계획법이라는 말이 멋있어서 붙인 이름으로 dynamic이라는 말과 연관이 거의 없다. divide and conquer과 비슷하다고 생각할 수 있지만, 차이점은 작은 문제가 중복이 일어나는지 안 일어나는지이다. divide and conquer는 큰 문제를 해결하기 어려워 작은 문제로 나누어 푸는 방법이다. 특징은, 작은 문제에서 반복이 이렁나지 않는다는 것이다. dynamic programming은 작은 (답이 바뀌지 않는) 부분문제들이 반복되는 것이다. Dynamic Programming ..
git 편집 에디터 바꾸기 (nano to vim) git config --global core.editor "vim" nano에서 vim으로 git 편집 에디터를 바꿀 수 있다 rebase 등의 과정 시 vim 에디터로 편집할 수 있다