본문 바로가기

Coding

(37)
GitHub: How to make a fork of public repository private? - stackoverflow.com/questions/10065526/github-how-to-make-a-fork-of-public-repository-private
Github 비밀번호 입력 없이 pull/push (ssh key 설정) GitHub에 pull, push를 할 때 매번 패스워드를 물어보는데 ssh key를 통해 이 과정을 생략할 수 있다. 본인은 윈도우 WSL2 환경이다. 1. SSH key 파일 생성 - 기존 생성해놓은 키가 있다면 .pub 파일 등과 같은 키파일이 있고 다음 명령어를 통해 확인하자 > ls -al ~/.ssh ls: cannot access '/home/user/.ssh': No such file or directory - ~/.ssh 디렉토리가 없는경우 아래와 같이 생성한다 > mkdir ~/.ssh > chmod 700 ~/.ssh > cd ~/.ssh - ssh key 생성하기 (메일에는 본인 github 계정에 등록한 이메일 주소) - -t rsa는 rsa라는 암호화 방식으로 키 생성 - SSH..
Kruskal, Prim 알고리즘 Kruskal 알고리즘이란 - greedy method를 이용하여 네트워크(가중치를 간선에 할당한 그래프)의 모든 정점을 최소 비용으로 연결하는 최족 해답을 구하는 것 - greedy method 결정을 해야 할 때마다 그 순간에 가장 좋다 생각되는 것을 선택함으로써, 최종적인 해답에 도달 그 순간에는 최적이지만, 전체적인 관점에서 최적이라는 보장이 없기 때문에 반드시 검증해야 한다 Kruskal 알고리즘은 최적의 해답을 주는 것으로 증명되어 있다 - MST(Minimum Spanning Tree, 최소 비용 신장 트리)가 1)최소 비용의 간선으로 구성됨 2) 사이클을 포함하지 않음 의 조건에 근거하여 각 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택한다 - spanning tree는 모든 간선을..
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 에디터로 편집할 수 있다