컴퓨터공학 💻
-
이진 트리의 순회 순회(Traversal)란 어떠한 목적을 위해 트리의 노드들을 체계적으로 방문하는 것입니다. 순회의 방법에는 여러가지가 있으며 목적에 따라 어떤 순회를 선택할 것인지를 결정하게 됩니다. 전위 순회 (preorder traversal) : VLR 전위 순회는 루트 이진 트리->왼쪽 이진 트리->오른쪽 이진 트리 순으로 방문하는 방식입니다. 중위 순회 (inorder traversal) : LVR 중위 순회는 왼쪽 이진 트리->루트 이진 트리->오른쪽 이진 트리 순으로 방문하는 방식입니다. 후위 순회 (postorder traversal) : LRV 후위 순회는 왼쪽 이진 트리->오른쪽 이진 트리->루트 이진 트리 순으로 방문하는 방식입니다. 알고리즘 (inorder, preorder, p..
[자료구조] 이진 트리의 순회 - 전위 순회, 중위 순회, 후위 순회이진 트리의 순회 순회(Traversal)란 어떠한 목적을 위해 트리의 노드들을 체계적으로 방문하는 것입니다. 순회의 방법에는 여러가지가 있으며 목적에 따라 어떤 순회를 선택할 것인지를 결정하게 됩니다. 전위 순회 (preorder traversal) : VLR 전위 순회는 루트 이진 트리->왼쪽 이진 트리->오른쪽 이진 트리 순으로 방문하는 방식입니다. 중위 순회 (inorder traversal) : LVR 중위 순회는 왼쪽 이진 트리->루트 이진 트리->오른쪽 이진 트리 순으로 방문하는 방식입니다. 후위 순회 (postorder traversal) : LRV 후위 순회는 왼쪽 이진 트리->오른쪽 이진 트리->루트 이진 트리 순으로 방문하는 방식입니다. 알고리즘 (inorder, preorder, p..
2021.05.10 -
이진 트리의 구현, 표현 방법에는 배열을 이용한 방법과 연결리스트를 이용한 방법이 있습니다. 배열을 이용한 이진 트리의 구현 배열을 이용한 방법은 모든 이진 트리를 포화 이진 트리라고 가정하고 각 노드에 번호를 붙여서 그 번호를 배열의 인덱스로 삼아 노드의 데이터를 배열에 저장하는 방법입니다. 어떤 노드를 n이라고 할 때, n의 부모 노드의 인덱스(index)는 n/2 n의 왼쪽 자식 노드의 인덱스는 2n n의 오른쪽 자식 노드의 인덱스는 2n + 1 입니다. 위 그림에서 c노드의 배열 인덱스를 찾기 위해서는 i의 인덱스를 1이라고 할 때, 순차적으로 계산하면 됩니다. f의 인덱스 == (1 * 2), a의 인덱스 == (2 * 2), b의 인덱스 == (4 * 2 + 1), e의 인덱스 == (9 * ..
[자료구조] 이진 트리의 구현이진 트리의 구현, 표현 방법에는 배열을 이용한 방법과 연결리스트를 이용한 방법이 있습니다. 배열을 이용한 이진 트리의 구현 배열을 이용한 방법은 모든 이진 트리를 포화 이진 트리라고 가정하고 각 노드에 번호를 붙여서 그 번호를 배열의 인덱스로 삼아 노드의 데이터를 배열에 저장하는 방법입니다. 어떤 노드를 n이라고 할 때, n의 부모 노드의 인덱스(index)는 n/2 n의 왼쪽 자식 노드의 인덱스는 2n n의 오른쪽 자식 노드의 인덱스는 2n + 1 입니다. 위 그림에서 c노드의 배열 인덱스를 찾기 위해서는 i의 인덱스를 1이라고 할 때, 순차적으로 계산하면 됩니다. f의 인덱스 == (1 * 2), a의 인덱스 == (2 * 2), b의 인덱스 == (4 * 2 + 1), e의 인덱스 == (9 * ..
2021.05.10 -
파일시스템과 파일 입출력 : fread(), fwrite(), fseek() 연습문제 01-01. 파일 내용에 쓰인 영문 소문자를 모두 대문자로 변경하는 프로그램을 작성하시오. 조건1 | 입력파일과 출력파일을 인자로 받아서 결과를 출력파일에 저장한다. 조건2 | 출력파일을 받지 않는 경우 터미널 창에 표준 출력한다. 실행결과 01-02. 파일 내용에 쓰인 내용을 역순으로 출력하는 프로그램을 작성하라. 조건1 | 입력파일과 출력파일을 인자로 받아서 결과를 출력파일에 저장한다. 조건2 | 출력파일을 받지 않는 경우 터미널 창에 오류를 출력한다. 실행결과
[시스템 프로그래밍] 파일시스템과 파일 입출력 : fread(), fwrite(), fseek() 연습문제파일시스템과 파일 입출력 : fread(), fwrite(), fseek() 연습문제 01-01. 파일 내용에 쓰인 영문 소문자를 모두 대문자로 변경하는 프로그램을 작성하시오. 조건1 | 입력파일과 출력파일을 인자로 받아서 결과를 출력파일에 저장한다. 조건2 | 출력파일을 받지 않는 경우 터미널 창에 표준 출력한다. 실행결과 01-02. 파일 내용에 쓰인 내용을 역순으로 출력하는 프로그램을 작성하라. 조건1 | 입력파일과 출력파일을 인자로 받아서 결과를 출력파일에 저장한다. 조건2 | 출력파일을 받지 않는 경우 터미널 창에 오류를 출력한다. 실행결과
2021.05.07 -
트리(tree) 트리는 계층적인 구조를 나타내는 비선형 자료구조입니다. 트리는 부모-자식 관계의 노드들로 이루어지며 트리를 응용한 분야로는 계층적 조직을 표현하거나 컴퓨터 파일들의 디렉토리 구조 조직, 인공지능에서의 결정 트리 등이 있습니다. 트리의 용어 노드(node) : 트리의 구성 요소입니다. 루트(root) : 부모가 없는 최상위 노드입니다. 서브 트리(subtree) : 하나의 노드와 그 노드들의 자손들의 이루어진 트리입니다. 단말노드(terminal node) : 자식이 없는 노드입니다. 비단말노드 : 적어도 하나의 자식을 가지는 노드입니다. 자식, 부모, 형제, 조상, 자손 노드: 용어 그대로의 의미입니다. 레벨(level) : 트리의 각층의 번호입니다. 높이(height) : 트리의 최대 ..
[자료구조] 이진 트리(binary tree) 개념트리(tree) 트리는 계층적인 구조를 나타내는 비선형 자료구조입니다. 트리는 부모-자식 관계의 노드들로 이루어지며 트리를 응용한 분야로는 계층적 조직을 표현하거나 컴퓨터 파일들의 디렉토리 구조 조직, 인공지능에서의 결정 트리 등이 있습니다. 트리의 용어 노드(node) : 트리의 구성 요소입니다. 루트(root) : 부모가 없는 최상위 노드입니다. 서브 트리(subtree) : 하나의 노드와 그 노드들의 자손들의 이루어진 트리입니다. 단말노드(terminal node) : 자식이 없는 노드입니다. 비단말노드 : 적어도 하나의 자식을 가지는 노드입니다. 자식, 부모, 형제, 조상, 자손 노드: 용어 그대로의 의미입니다. 레벨(level) : 트리의 각층의 번호입니다. 높이(height) : 트리의 최대 ..
2021.05.06 -
연결리스트로 구현한 스택 스택을 구현하는 데 있어서 연결리스트를 활용할 수 있습니다. 연결리스트로 스택을 구성하면 배열로 구성된 스택에 비해 크기의 제한이 없다는 장점이 있지만 반대로 메모리를 동적으로 할당하므로 할당과 해제에 따른 시간이 소모된다는 단점이 있습니다. 삽입 연산 연결리스트로 구현된 스택에 노드를 삽입하는 연산의 경우 다음 두 순서의 변경 사항이 필요합니다. 1. temp(삽입할 노드)의 link를 top으로 할당. 2. top을 temp로 할당. 이때 순서가 변경되어서는 안됩니다. 만약 top을 temp로 할당하는 과정을 먼저 수행하면 temp의 link가 가리킬 위치를 알 수 없게됩니다. 삭제 연산 연결리스트로 구현된 스택에 노드를 삭제하는 연산의 경우 다음 두 순서의 변경 사항이 필요..
[자료구조] 연결리스트를 활용한 스택 구현연결리스트로 구현한 스택 스택을 구현하는 데 있어서 연결리스트를 활용할 수 있습니다. 연결리스트로 스택을 구성하면 배열로 구성된 스택에 비해 크기의 제한이 없다는 장점이 있지만 반대로 메모리를 동적으로 할당하므로 할당과 해제에 따른 시간이 소모된다는 단점이 있습니다. 삽입 연산 연결리스트로 구현된 스택에 노드를 삽입하는 연산의 경우 다음 두 순서의 변경 사항이 필요합니다. 1. temp(삽입할 노드)의 link를 top으로 할당. 2. top을 temp로 할당. 이때 순서가 변경되어서는 안됩니다. 만약 top을 temp로 할당하는 과정을 먼저 수행하면 temp의 link가 가리킬 위치를 알 수 없게됩니다. 삭제 연산 연결리스트로 구현된 스택에 노드를 삭제하는 연산의 경우 다음 두 순서의 변경 사항이 필요..
2021.05.06 -
파일시스템과 파일 입출력 : fopen(), fclose(), fgetc(), fputc() 연습문제 01-01. 명령줄 인수로 받은 텍스트 파일내의 문자의 수와 줄의 수를 출력하는 프로그램 ch12wc.c를 작성한다. 실행결과 01-02. 파일1에 파일2의 내용을 추가하는 프로그램 ch12append.c를 작성하라. 실행결과 01-03. 입력 파일의 홀수 줄 만을 출력 파일에 저장하는 프로그램 ch12cp.c를 작성하라. 실행결과 01-04. ch12cp의 입력파일과 출력파일을 diff로 비교해 보고 설명한다. 2d1 : origin.txt의 line2를 삭제하면 copied.txt의 line1과 같다. 4d2 : origin.txt의 line4를 삭제하면 copied.txt의 line2와 같다. 6d..
[시스템 프로그래밍] 파일시스템과 파일 입출력 : fopen(), fclose(), fgetc(), fputc() 연습문제파일시스템과 파일 입출력 : fopen(), fclose(), fgetc(), fputc() 연습문제 01-01. 명령줄 인수로 받은 텍스트 파일내의 문자의 수와 줄의 수를 출력하는 프로그램 ch12wc.c를 작성한다. 실행결과 01-02. 파일1에 파일2의 내용을 추가하는 프로그램 ch12append.c를 작성하라. 실행결과 01-03. 입력 파일의 홀수 줄 만을 출력 파일에 저장하는 프로그램 ch12cp.c를 작성하라. 실행결과 01-04. ch12cp의 입력파일과 출력파일을 diff로 비교해 보고 설명한다. 2d1 : origin.txt의 line2를 삭제하면 copied.txt의 line1과 같다. 4d2 : origin.txt의 line4를 삭제하면 copied.txt의 line2와 같다. 6d..
2021.04.28