본문 바로가기

전체 글

(74)
서브 모듈(submodule) 연관 서브모듈 확인 git submodule 서브모듈 추가 git submodule add .gitmodules에 추가한 서브 모듈 정보가 저장된다. 하나의 특별한 파일로 취급하여, 서브모듈 하위 파일 정보에 대한 수정 사항을 직접 추적하지 않는다. 서브모듈 초기화 git submodule init 서브모듈 업데이트 git submodule update [--rcursive] 서브모듈 제거하기 git rm rm -rf .git/modules/ git add . git push origin 서브모듈 포함한 프로젝트 Clone 하기 git clone --recurse-submodules 위 명령어 사용시, 서브모듈을 포함해서 저장소 내용이 복제된다. --recurse-submodules 옵션을 빼먹었다면 아..
Git 기본 명령어 정리 깃의 3가지 상태 Modified : 수정한 파일을 로컬 저장소에 커밋하지 않은 상태 Staged : 수정한 파일을 곧 커밋할 것이라고 표시한 상태 (스테이징 영역에 올라가 있는 상태) Committed : 로컬 저장소에 반영된 상태 HEAD : 현재 브랜치의 마지막 스냅샷 origin : 원격 저장소의 별칭 master : master브랜치 생성 새로운 로컬 저장소 생성 git init 위 명령 실행시 .git 파일이 생성됨 원격 저장소에 등록 git remote add origin 저장소 가져오기 git clone 확인 디렉토리 변경 사항 보기 git status 작업 영역과 스테이징 영역/로컬 저장소의 차이 보기 git diff git diff --cached git diff HEAD git dif..
펜윅 트리(Fenwick Tree) Goal 펜윅 트리를 구현할 수 있다. 펜윅 트리(Fenwick Tree)란? 펜윅 트리는 구간합을 빠르게 구하기 위한 자료구조이다. (BIT, binary indexed tree 라고도 한다.) 기본 연산 sum(pos) : [0~pos] 부분합(prefix sum) [a, b]구간의 range sum은 sum(b) - sum(a - 1) 로 구한다. add(pos, diff) : 값 변경에 영향 받는 구간 갱신 두 연산 모두 O(logN)의 시간 복잡도를 갖는다. 공간 복잡도 : O(N) - (정확히 N + 1) 펜윅 트리 vs 세그먼트 트리 펜윅 트리 장점 코드 길이가 더 짧다. (구현이 간단) 메모리가 더 적게 든다. 세그먼트 트리 모든 구간에 대한 값을 가지고 있기 때문에 좀 더 일반적으로 사용..
세그먼트 트리(Segment tree) Goal 세그먼트 트리를 구현할 수 있다. 세그먼트 트리(Segment tree)란? 각 노드가 구간을 표현하는 트리이다. (구간 트리 라고도 한다.) 세그 먼트 트리의 기본 구조 1. 루트가 표현하는 구간 크기가 2^n 형태인 경우 값의 개수가 2^n 꼴이 아닐 경우 남는 구간을 의미없는 기본 값으로 채워 포화 이진 트리 형태로 표현 2. 루트 구간이 표현하는 구간 크기가 2^n이 아닌 경우 Root Node : 전체 구간을 표현한다. Leaf Node : 크기가 1인 구간. 즉, 값 자체를 표현한다. Internal Node : [a, b] 구간 정보를 표현한다. 기본 연산 Query(from, to) : 구간 합과 같이 특정 구간에 대한 질의 처리 Update(index, data) : 값 변경에 ..
Prefix sum GoalPrefix sum을 구현할 수 있다.Prefix Sum이란?시작 위치부터 현재 위치까지의 원소 합을 저장하는 배열이다.부분 합(partial sum) 또는 누적 합(cumulative sum)이라고도 한다. Prefix sum은 누적 합을 미리 구하는 전처리 과정을 통해 구간 합(range sum)을 빠르게 구할 때 사용된다. *prefix sum : 0~b까지의 누적합 (반드시 첫번 째 원소를 포함하는 구간)*range sum : a~b까지의 구간 합 예를 들어 누적 합을 저장한 배열을 pSum이라고 할 때,[a, b] 구간의 합을 구하기 위해서 pSum[b] - pSum[a - 1]와 같은 연산을 해주면 O(1) 시간에 구간 합(range sum)을 구할 수 있다.a가 0인 경우, pSum[..
가상 메모리(virtual memory) Goal 가상 메모리가 무엇인지 설명할 수 있다. 페이징(paging), 세그멘테이션(segmentation)에 대해 설명할 수 있다. 관련 포스팅 주소 바인딩 가상 메모리(Virtual Memory)란? 실제 메모리 크기와 상관 없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법이다. 가상 메모리를 사용하면 다음과 같은 이점이 있다. 실제 메모리(RAM) 크기 보다 더 큰 공간을 사용할 수 있다. (보조 기억장치 공간 사용) 가상의 주소 공간을 사용하여 논리적인 연속성을 제공해준다. 물리 메모리 주소 공간을 알 필요가 없어진다. 대표적인 가상 메모리 기법으로 페이징(paging), 세그멘테이션(segmentation)이 있다. 현대 운영체제에서는 두 가지 방식이 혼용되어 사용된다. 두 ..
피보나치 수열 www.acmicpc.net/blog/view/28
메모리 관리 3 - 메모리 단편화(Memory Fragmentation) Goal 내부 단편화, 외부 단편화에 대해 설명할 수 있다. 메모리 단편화 해결 방법에 어떤 것들이 있는지 설명할 수 있다. 메모리 단편화(Memory Fragmentation)란? 메모리 단편화란 메모리 공간이 비효율적으로 사용되어 저장 공간이 낭비되는 것을 말한다. 메모리 단편화로 일어날 수 있는 현상 총 메모리 공간은 충분 하지만 실제 사용이 불가능할 수 있다. 실제 사용 가능한 공간이 줄어들어 시스템 성능의 저하를 일으킬 수 있다. 실제 사용할 수 있는 공간을 찾는 과정이 필요 잦은 페이지 교체 swapping 메모리 단편화의 종류로 내부 단편화, 외부 단편화가 있다. 내부 단편화(Internal fragmentation) 할당한 영역 중 사용되지 않는 공간으로 인해 공간이 낭비되는 것을 의미한다..