전체 글 215

push, pull, fetch

push git push [원격 저장소 별칭] [브랜치 이름] ex) git push origin master 모든 브랜치에 push 하기git push origin --all 원격 저장소에 별도의 브랜치를 만들어 push 하기git push [원격 저장소 별칭] [로컬 브랜치]:[새로 만들 원격 브랜치] ex) git push origin master:test pull fetch + merge 와 같다, 처음에 저장소를 불러올 때 외엔 잘 쓰이지 않는다.git pull [원격 저장소 별칭] [원격 브랜치] ex) git pull origin master fetch 원격저장소의 커밋들을 로컬저장소로 가지고만 온다. (병합은 안함!)주로 pull 대신 fetch + merge 하여 사용한다.git fetc..

카테고리 없음 2017.07.20

사용자 등록, 저장소 만들기, 원격 브랜치 연결, commit

사용자 이름, 계정 등록 git config --global user.name "사용자이름"git config --global user.email "이메일" ※ 프로젝트마다 다른 이름과 이메일 주소를 사용하고 싶으면, --global 뺌 설정한 옵션 확인하기git config --list 현재 사용자 확인하기git config user.name Case 1. 새로 저장소 만드는 경우 1. 해당 디렉토리로 이동한다 2. 로컬 저장소 생성하기git init 3. 새로 생성한 파일 추가하기 / 수정한 파일 Staged 영역에 추가하기git add 파일명 or 디렉토리명 ※ 참고- 이름에 공백이 있는 경우 ''로 묶기- 하위 폴더/파일 포함하여 add 하려면 뒤에 /* 붙이기git add 'Java Applic..

카테고리 없음 2017.07.20

전위, 중위, 후위 연산자 / 후위 표기식 변환

중위 표기식은 a+b 처럼 연산자가 가운데에 오는 평상시에 쓰는 식의 형태를 말한다. 그렇다면 전위, 후위 연산은 무엇일까?설명a=0, b=0, c=0 ++a (a=1)b++ (b=1) c = ++a (a=2, c=2) ... a 증가 -> c에 대입c = b++ (b=2, c=1) ... c에 대입 -> b 증가 c = (a++)+(++b) (a=3, b=3, c=5) ... b 증가 -> 덧셈 -> c 대입 -> a 증가 1. PostFixNotation 중위 표기식의 한계사람이 사용하는 중위 표기식 계산은 컴퓨터 계산으로 활용하기 힘들다.계산식의 우선순위를 논리적으로 판단하기 힘들기 때문이다.그로 인해 후위 표기 방법을 사용하며, 중위 표기식을 후위 표기로 변환하는 알고리즘들이 만들어진다. 그 중 ..

카테고리 없음 2017.07.20

피보나치 수열 (재귀적, 반복적)

#include int fib1(int); //재귀형 피보나치 함수(Recursive) int fib2(int); //반복형 피보나치 함수(Iterative) void main() { int x; printf("재귀형->1\n반복형->2\n입력:"); scanf("%d", &x); int n; printf("\n몇번째항?\n입력:"); scanf("%d", &n); switch (x) { case 1: //재귀 { int a = fib1(n); printf("%d \n", a); break; } case 2: //반복 { unsigned int b = fib2(n); printf("%d\n", b); break; } } } int fib1(int n) //재귀형 피보나치 함수(Recursive) { /*..

카테고리 없음 2017.07.20

이항계수 (파스칼의 삼각형)

#include void main() { int n, k; n = 20; k = 20; int ** B = new int *[n]; for (int i = 0; i < n; i++) { B[i] = new int[k]; } for (int i = 0; i < n; i++) { int min = 0; if (i < k) min = i + 1; //min=i일때 i가 0이면 0번반복이되게되는걸 막음. else min = k; for (int j = 0; j < min; j++) { if (j == 0 || j == i) B[i][j] = 1; else B[i][j] = B[i - 1][j - 1] + B[i - 1][j]; printf("%d", B[i][j]); } printf("\n"); } } #inc..

카테고리 없음 2017.07.20

최대공약수 구하기 (유클리드의 알고리즘)

두 수 A,B가 있다고 하자. 둘의 최대공약수를 G라고 하면 A = G*aB = G*b 로 표현할 수 있다. 그리고 A - B = G*(a-b) 이므로A와 B의 최대공약수는 A-B와의 최대공약수이기도 하다. 이 원리를 이용해서62와 28의 최대공약수를 구해보면(62, 28)(34, 28)(6, 28)(6, 22)(6, 16)(6, 10)(6, 4)(2, 4)(2, 2)(0, 2) 0이 나오면 종료. 최대공약수는 2 그러나 이 방식을 프로그램으로 구현하면 큰 차이가 나는 수들은 루프를 비교적 많이 돌게 된다. 이를 개선시켜 여러번의 뺄셈을 나눗셈으로 줄여 계산하는 방법이 있다.(62, 28)62 % 28 = 6 --> (28, 6)28 % 6 = 4 --> (6, 4)6 % 4 = 2 --> (4,2)4 ..

카테고리 없음 2017.07.20

다익스트라(Dijkstra), 벨만 포드(Bellman-Ford)

메인 클래스는 알아서 만들어서 쓰면 된다. 개선 방법은 쓰지 않음. 다익스트라 예를 들어, 0에서 가장 가까운 곳은 5번 노드(거리1)이다. 그럼 5번 노드가 vnear이 되고 5번 노드를 경유해서 가는 루트를 고려하여 최소길이를 갱신(이전가지는 0에서 바로 가는 루트들이 최소인 것이다) 그 다음 5번 노드는 제외하고 다음으로 가까운 곳은 1번 노드이니 1번 노드가 vnear이 되고 아까 5번 노드를 경유한 루트도 고려하여 갱신된 최소 루트들을 1번 노드를 경유하는 것도 고려하여 또다시 갱신 이와 같은 방법으로 마지막 노드까지 반복 벨만 포드 시작점 고정시키고 경유지랑 목적지를 이중 반복문 돌려서 경유한 길이와 원래 길이를 비교해서 짧은 것으로 갱신 갱신할 때 마다 길이값들이 달라지므로 다시 비교가 필요..

카테고리 없음 2017.07.20

동적계획법(Dynamic Programming), 탐욕적 방법(Greedy Algorithms)

먼저 책이랑 프린트를 보시오.. 동적계획법(dynamic programming) - 문제를 여러개의 하위 문제로 나누어 푼다음 결합 (이전의 결과를 활용하여 다음 결과를 산출하는 것)- 문제를 해결하기 위한 모든 방법을 검토하고, 그 중에 최적의 풀이를 찾아냄.-> 느릴 수 있으나 정확한 결과를 갖다 줌.ex) 플로이드, 벨만포드, 다익스트라, 비터비, 배낭문제, CYK(Cocke-Younger-Kasami) 1) 플로이드-워셜 알고리즘- 경유점, 시작점, 끝점을 모두 루프를 돌아 모든 노드 쌍들에 대한 최단의 경로를 선택. 2) 벨만-포드 알고리즘- 시작점은 고정되어 있고, 경유점, 끝점 루프를 돌아 시작점으로 부터 최단의 경로를 선택.- 시작점이 고정되있는걸 빼면 플로이드와 유사하고, 음수를 처리할 ..

카테고리 없음 2017.07.20

연역법, 귀납법

명제를 세운 뒤 논거를 제시하면서 결론에 이르는 과정이 추론입니다.추론의 대표적인 방법으로는 연역법, 귀납법 등이 있습니다. 연역법 일반적인 원리를 가지고 구체적이고 특수한 사실을 증명하는 방법 모든 동물은 죽는다. -- 대전제(일반적 원리)사람은 동물이다. -- 소전제(구체적 사실)그러므로 사람은 죽는다. -- 추 론(구체적 원리) 간단히 설명하자면 근본적이고 증명된 원리를 이용 한 전개입니다따라서 반박의 여지가 별로없지요 사람은 언젠가 죽는다당신은 사람이다그러므로 당신은 언젠가는죽는다 (결론) 귀납법 귀납법은 쉽게 말하면 몇가지 예 를 통해서 일반적인 속성을 끌어내는 방법입니다과학실험 등이 이런 류이지요 여러 가지 구체적인 사실에서 공통적으로 나타난 현상을 통해 일반적인 원리를 이끌어내는 방법 사람은..

카테고리 없음 2017.07.20