![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDet52%2FbtrzLIEiVvK%2Fjp3PZjldJSFSYT7htcMrs0%2Fimg.png)
이번 포스트에서는 리눅스의 명령어인 cp, mv, rm에 대해 다루도록 하겠습니다. cp : 파일 1의 복사본 파일 2를 현재 디렉토리 내에 생성 주요 옵션 : -r : (--recursion) 디렉토리1의 하위 파일 도무 복사 -f : (--force) 복사 파일 대상이 이미 있으면 강제로 지우고 복사 -i : (--interactive) 대화형 옵션 실행 화면 : mv : 파일 1의 이름을 파일 2로 변경하는 명령어 주요 옵션 : -i : (--interactive) 대화형 옵션 실행 화면 : rm : 명령줄 인수로 받은 파일(들)을 지우는 명령어 주요 옵션 : -r : (--recursion) 디렉토리 내의 모든 파일 및 하위 디렉토리들을 단번에 삭제 -i : (--interactive) 대화형 옵..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc0v03%2FbtrzLIqBim1%2FwIuhXQrqNfNEokYxFIGTX0%2Fimg.png)
이번 포스트에서는 파일의 절대 경로명과 상대 경로명에 대해 다루도록 하겠습니다. 절대 경로명(absolute path name) : 루트 디렉토리로부터 시작하여 경로 이름을 정확하게 나타내는 것 ~ : 홈 디렉토리 . : 현재 디렉토리 .. : 부모 디렉토리 상대 경로명(relative path name) : 현재 작업 디렉토리로부터 시작해서 경로 이름을 나타내는 것 예시 : cs1.txt의 절대 경로명 : /home/chang/test/cs1.txt cs1.txt의 상대 경로명 : cs1.txt
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPwBmX%2FbtrzKtVkeMX%2FDY7PtKs6OSpnKbMJekV1S0%2Fimg.png)
이번 포스트에서는 리눅스의 명령어인 pwd, which, cd에 대해 다루도록 하겠습니다. pwd : 현재 작업 디렉토리를 출력하는 명령어 실행 화면 : which : 명령어의 절대경로를 보여주는 명령어 실행 화면 : cd : 현재 작업 디렉토리를 지정된 디렉토리 실행 화면 :
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb44EMG%2FbtrzIspi1ip%2FLtVIK9bOZVk8d2NIfrVfq0%2Fimg.png)
이번 포스트에서는 리눅스의 명령어인 mkdir, rmdir, ls에 대해 다루도록 하겠습니다. mkdir : 디렉토리(들)을 새로 만드는 명령어 주요 옵션 : -p : 중간 디렉토리 자동 생성 옵션 실행 화면 : rmdir : 디렉터리(들)을 삭제하는 명령어 실행 화면 : ls : 디렉토리의 내용을 리스트로 출력하는 명령어 주요 옵션 : -s : (--size) 크기 표시 -a : (--all) 숨김 파일 표시 -l : (--long) 자세한 정보 표시 -h : (--human) K, M, G 단위를 사용하여 파일 크기를 사람이 보기 좋게 표시 -F : () 파일의 종류를 표시 -R : 모든 하위 디렉토리 출력 실행 화면 :
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU5og4%2FbtrzAVKSYRO%2FUykAHemM2dwR5GyKguO1yK%2Fimg.png)
이번 포스트에서는 깊이 우선 탐색(DFS) 알고리즘에 대해 다루도록 하겠습니다. 깊이 우선 탐색(DFS)란? : 루트 노드(혹은 임의의 노드)부터 시작하여 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법입니다. 즉, 넓게 탐색하기 전에 깊게 탐색하는 것입니다. 깊이 우선 탐색의 특징 : 재귀 알고리즘이다. 모든 형태의 트리 순회(traversals)는 깊이 우선 탐색의 종류이다. 어떤 노드를 방문했는지를 반드시 검사한다. 더 이상 방문할 노드가 없으면 이전 노드로 backtracking(다시 돌아가서 탐색하지 않은 정점이 있는지 확인) 깊이 우선 탐색의 동작 과정 : V0부터 시작해서 V0 방문 V0과 인접한 V1 방문 V1과 인접한 V3 방문 V3과 인접한 V7 방문 V7과..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQOaoZ%2FbtrzwfQW238%2F0T1EktSBYmkaFnx5ZdbRIK%2Fimg.png)
이번 포스트에서는 너비 우선 탐색(BFS) 알고리즘에 대해 다루도록 하겠습니다. 너비 우선 탐색(BFS)이란? : 루트 노드(혹은 임의의 노드)부터 시작해서 인접한 노드를 먼저 탐색하는 방법입니다. 즉, 깊게 탐색하기 전에 넓게 탐색하는 것입니다. 너비 우선 탐색의 특징 : 재귀적으로 동작하지 않는다. 방문한 노드들을 차례대로 저장한 후 꺼낼 수 있는 자료 구조인 큐(Queue)를 사용한다. 어떤 노드를 방문했는지를 반드시 검사한다. 너비 우선 탐색의 동작 과정 : 초기 상태의 큐에는 시작 노드만 저장. (Q = [0]) 큐에서 노드를 꺼내서 방문 및 인접 노드를 큐에 삽입 -> V0 방문 (Q = [1, 2]) 더 이상 삽입할 인접한 노드가 없다면 dequeue 실행 (큐의 맨 앞에서 노드를 꺼낸다) ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO4VTr%2FbtrzzpZW2Xr%2F5OHKFYMS7bkKWcwMbBfRCk%2Fimg.png)
이번 포스트에서는 그래프의 표현법인 인접 행렬과 인접 리스트에 대해 다루도록 하겠습니다. 인접 행렬(Adjacency Matrix)란? : 그래프의 연결 관계를 2차원 배열로 나타내는 방식입니다. A[u][v]라는 인접 행렬이 있다고 가정하면, 노드 u에서 노드 v로 가는 간선이 있다면 1, 없다면 0으로 표현할 수 있습니다. 인접 행렬의 예시 : 무방향성 그래프: A[][]는 대칭 행렬 (이때, A[n(n-1)/2]로 구현 가능) 방향성 그래프 : A[][]는 비대칭 행렬 장점 : 구현이 쉽다 단점: 복잡도 = O(n의 2승) 인접 리스트(Adjacency List)란? : n개의 정점(vertex)을 각각에 대해 인접한 정점들의 리스트로 만드는 것입니다. 즉, 그래프 G의 각 정점에 대해 한 개의 연..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0OlA0%2FbtrzvUfcS9C%2FMVwwKYmChQZXRWsPrmoKx0%2Fimg.png)
이번 포스트에서는 자료구조 상의 그래프(Graph)에 대해 다루도록 하겠습니다. 그래프란? : 그래프는 2개의 집합 V와 E로 구성됩니다. 이때 V는 공집합이 아닌 정점(vertex)의 유한 집합이고 E는 간선(edge)들의 집합입니다. 그래프의 특징 : 2개이상의 경로가 가능하다. 루트 노드라는 개념이 없다. 부모-자식 관계라는 개념이 없다. 그래프에 사용되는 용어 : 정점(vertex) : 위치라는 개념 간선(edge) : 위치 간의 관계, 즉 노드를 연결하는 선 완전 그래프(Complete graph) : 간선의 수가 최대인 그래프 인접(adjacent) : 간선에 의해 직접 연결된다 부분 그래프(Subgraph) : V(G')⊆V(G)이고 E(G')⊆E(G)일 경우, G'는 G의 부분 그래프 경로..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg4l5D%2FbtrzjavFoxJ%2FKokobtcUy2RjSZV5s5N0x1%2Fimg.png)
이번 포스트에서는 디렉토리 계층 구조에 대해 다루도록 하겠습니다. Filesystem Hierarchy Standard (파일 시스템 계층 구조 표준) Linux Directory (리눅스 디렉토리) : 리눅스의 디렉토리는 루트로부터 시작해서 Tree 형태의 계층 구조를 이루고 있습니다. / : 최상위 디렉토리 /bin : 기본 명령어 /sbin : 부팅 관련 명령어 /etc : 환경 설정 파일 /boot : 리눅스 커널 이미지 부트로더 /dev : 디바이스 파일 /home : 사용자 홈 디렉토리 /root : 관리자 홈 디렉토리 /lib : 라이브러리 /var : 메일, 로그 스풀링, 웹 서비스 /tmp : 임시 파일 /proc : 시스템 정보를 저장하는 가상 파일 시스템 /lost + found : ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp12Ko%2Fbtrzd8qVZaQ%2Fhzi7wbCquZCSLZXRTUGQUk%2Fimg.png)
이번 포스트에서는 자료구조의 힙(Heap)에 대해 다루도록 하겠습니다. 힙이란? : 완전 이진 트리 구조의 일종으로 우선순위 큐를 위해 만들어진 자료구조입니다. 힙의 종류 : 최대 힙 (Max Heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 (부모 key ≥ 자식 key) 최소 힙 (Min Heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 (부모 key ≤ 자식 key) 최대 힙(Max Heap)의 추가 및 삭제 : 최대 힙 추가 소스 코드 : void push_max_heap(element item, int *n) { int i; if (HEAP_FULL(*n)) { fprintf(stderr, "The heap is full..