분류 전체보기 113

폰노이만 구조(Von-Neumann Model of Computer)

폰노이만 구조(Von-Neumann Model of Computer) - 오늘날 모든 주요 명령어 집합 아키텍처에서 이 모델을 사용합니다 - Stored program - 선형 메모리 배열에 저장된 명령어입니다. - 메모리가 명령과 데이터 간에 통합됩니다. - 저장된 값의 해석은 제어 신호에 따라 달라집니다. - Sequential instruction processing - 한 번에 하나의 명령어 처리합니다. - 프로그램 카운터(명령 포인터)는 현재 명령을 식별합니다. - 프로그램 카운터는 제어 전송 지침을 제외하고 순차적으로 진행됩니다.

컴퓨터 구조란?

컴퓨터 구조 - 컴퓨터가 동작하는 방식을 기반으로 프로그래밍이 동작하는 것입니다. - 컴퓨터 동작과 프로그래밍은 긴밀히 연결되어 있으므로, 효과적인 프로그래밍을 위해, 컴퓨터 동작 방식 이해가 필요합니다. - 컴퓨터 구조는 컴퓨터 공학 핵심 과목인 운영체제 이해의 기반이 되는 지식이 됩니다. 컴퓨터 시스템 컴퓨터는 크게 하드웨어(Hardware), 소프트웨어(Software) 두 가지로 구성되어있습니다. 소프트웨어 : 운영체제, 응용프로그림 등 하드웨어 : CPU, Memory, Storage, Network 등

[DFS, BFS] 이진 트리의 순회(Traversal of Binary Tree)

이진 트리의 순회(Traversal) - 모든 노드를 빠뜨리거나 중복하지 않고 방문하는 연산합니다. - 순회 종류는 4가지가 있습니다. - 전위 순회(Preorder Traversal) - 중위 순회(Inorder Traversal) - 후위 순회(Postorder Traversal) - 레벨 순회(Level Traversal) DFS(Depth-First Search) or Depth-First Traversal : 다음 하위 항목으로 이동하기 전에 하위 항목의 모든 하위 항목을 처리합니다. - 스택(Stack)이 사용됩니다. 전위 순회(Preorder Traversal) - 방문 순서 : 현재 노드 -> 왼쪽 노드 -> 오른쪽 노드 위 그림의 방문 순서 : A->B->C->D->E->F 중위 순회(I..

이진 트리(Binary Tree)

이진 트리(Binary Tree) : 어떠한 노드도 2개보다 많은 Subtree 가질수 없습니다. - 각 노드는 최대 2개의 자식을 가질 수 있습니다. - 자식 노드는 좌우를 구분합니다. - 왼쪽 자식 : 부모 노드의 왼쪽 아래입니다. - 오른쪽 자식 : 부모 노드의 오른쪽 아래입니다. Subtree : 하위 트리는 하위 트리로 나눌 수 있습니다. - 단일 노드도 하위 트리입니다. 이진 트리의 종류 포화 이진 트리(Perfect Binary Tree) : 모든 레벨에서 노드들이 꽉 채워져 있는 트리 완전 이진 트리(Complete Binary Tree) : 마지막 레벨을 제외하고 노드들이 모두 채워져 있는 트리 정 이진 트리(Full Binary Tree) : 모든 노드가 0개 또는 2개의 자식 노드를 ..

트리(Tree)

트리(Tree) : 트리는 Nodes와 Branches로 이루어져 있다. - 노드와 링크로 구성된 자료구조 (그래프의 일종, Cycle 없음) - 계층적 구조를 나타낼 때 사용 - 폴더 구조(디렉토리, 서브 디렉토리) - 조직도, 가계도, ... 트리의 구성 요소 - 노드(Node) : 트리 구조의 자료 값을 담고 있는 단위 - 에지(Edge) : 노드 간의 연결선 (=link, branch) - 루트 노드(Root) : 부모가 없는 노드, 가장 위의 노드 - 잎새 노드(Leaf) : 자식이 없는 노드 (=단말) - 내부 노드(Internal) : 잎새 노드를 제외한 모든 노드 - 부모(Parent) : 연결된 두 노드 중 상위의 노드 - 자식(Child) : 연결된 두 노드 중 하위의 노드 - 형제(S..

메소드 정리

Scanner 메소드 선언 import java.util.Scanner; Scanner 객체 생성 /* 클래스_이름 객체_이름 = new 클래스_이름(); */ Scanner sc = new Scanner(System.in); // Scanner 객체 생성 메소드 이용하여 입력받기 byte a = sc.nextByte(); // byte 형 입력 및 리턴 short b = sc.nextShort(); // short 형 입력 및 리턴 char c = sc.next().charAt(0);// char 형 입력 및 리턴 int d = sc.nextInt(); // int 형 입력 및 리턴 long e = sc.nextLong(); // long 형 입력 및 리턴 float f = sc.nextFloat();..

힙(Heap)

학습 목표 힙 자료구조의 이해 최소 힙과 최대 힙의 삽입, 삭제 과정의 이해와 구현 힙(Heap) : 최소 값 또는 최대 값을 빠르게 찾아내는데 유용한 자료구조입니다. 1. Tree가 Complete or Nearly Complete.(중복 값 허용, 반 정렬 상태) 2. 최대 힙(Max Heap) : 부모 노드의 키 값이 자식의 키 값보다 크거나 같습니다. 최소 힙(Min Heap) : 부모 노드의 키 값이 자식의 키 값보다 작거나 같습니다. 최소 힙(Min Heap) - 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 형태입니다. Operation of Min Heap 최소 힙 - 삽입(Insertion) 1. 트리의 가장 끝 위치에 데이터 삽입합니다. 2. 부모 노드와 키 값을 비교한 후 ..

연결 리스트(Linked List)

연결 리스트(Linked List) : 데이터 요소들이 노드(Node)들에 의해 연결된 자료 구조입니다. - 데이터를 링크로 연결해서 관리하는 자료구조입니다. - 자료의 순서는 정해져 있지만, 메모리상 연속성이 보장되지는 않습니다. 연결 리스트(Linked List) 기본 구조 노드(Node) : 데이터 저장 단위로, 값(Data)과 포인터(Link)로 구성되어있습니다. 포인터(Pointer) or Next or Link : 다음 노드나 이전 노드의 연결 정보 연결 리스트(Linked List)의 장점 - 데이터 공간을 미리 할당할 필요가 없습니다. - 즉, 리스트의 길이가 가변적이라 데이터 추가/삭제가 용이합니다. 연결 리스트(Linked List)의 단점 - 연결구조를 위한 별도 데이터 공간이 필요합..

해시 테이블(Hash Table)

해시 테이블(Hash Table) : 키(Key), 값(Value)을 대응시켜 저장하는 데이터 구조 - 키를 통해 해당 데이터에 빠르게 접근 가능합니다. 해싱(Hashing) : 키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정입니다. 키(key) : 해시 테이블 접근을 위한 입력 값입니다. 해시 함수(Hash Function) : 키를 해시 값으로 매핑하는 연산합니다. 해시 값(Hash Value) : 해시 테이블의 인덱스입니다. 해시 테이블(Hash Table) : 키-값(key-value)을 연관 시켜 저장하는 데이터 구조입니다. 해시 충돌 : 해시 함수를 통해 index값을 구했을 때 중복이 생기는 충돌입니다. - 해시 테이블의 같은 공간에 서로 다른 값을 저장하려는 경우입니다. ..