Computer Science
-
[Python Algorithms] 트리(Tree) 2 : 순회 알고리즘Computer Science/Algorithms 2020. 11. 26. 09:52
트리에서는 네 가지 순회 알고리즘을 가진다. 1) 전위 순회(Pre-Order Traverse) 2) 중위 순회(In-Order Traverse) 3) 후위 순회(Post-Order Traverse) 4) 단계 순위 순회(Level-Order Traverse) 1. 전위 순회 A -> B -> D -> E -> C -> F -> G 2. 중위 순회 D -> B -> E -> A -> F -> C -> G 3. 후위 순회 D -> E -> B -> F -> G -> C -> A 4. 단계 순위 순회 A -> B -> C -> D -> E -> F -> G 5. 트리 순회 알고리즘 코드 트리 클래스 구조 코드 eusun0830.tistory.com/45?category=718944 [Python Algori..
-
[Python Algorithms] 트리(Tree) 1Computer Science/Algorithms 2020. 11. 25. 11:17
트리 구조는 연결 리스트와 비슷하게 노드와 링크를 이용하지만 동작 구조는 매우 다르다. 트리는 그래프의 일종이며 서로 다른 두 노드를 잇는 링크가 하나뿐인 그래프를 트리라고 표현한다. 1. 트리 구조 트리구조에서 가장 상위에 있는 노드를 루트(root)노드라 한다. 또한 어떤 노드보다 상위에 있는 노드를 부모 노드(parent node)라 하고 하위에 있는 노드를 자식 노드(child node)라고 표현한다. 같은 부모를 두고 있는 경우에는 형제 노드(sibling node)라 부른다. 최하위에 있는 노드들은 리프 노드(leaf node)가 된다. 트리 구조에는 레벨(level)과 높이(height)가 존재하는데 레벨은 루트 노드에서부터 특정 노드까지 찾아오는데 방문한 총 노드의 수를 말하고 높이는 트리..
-
[Python Algorithms] 큐(Queue)Computer Science/Algorithms 2020. 11. 19. 16:58
큐(Queue)는 스택과 함께 많이 사용되는 기본 자료구조이다. 스택이 LIFO(Last In First Out) 방식이라면 큐는 FIFO(First In First Out) 선입선출 방식이다. 큐라는 이름에서 알 수 있듯이 줄을 선 사람들의 모습을 생각하면 이해하기 편하다. 줄을 선 사람들은 줄을 선 순서대로 입장하거나 물건을 살 수 있기 때문에 선입선출의 구조라고 볼 수 있다. 큐에서 줄을 서는 것과 같은 역할을 풋(put)이라 하고 앞에서부터 입장하는 것과 같은 역학을 겟(get)이라 한다. 큐는 스택과 달리 배열을 사용하는 것이 더 유용하다. def put(item): queue.append(item) def get(): return queue.pop(0) if __name__ == '__main..
-
[Python Algorithms] 스택(Stack)Computer Science/Algorithms 2020. 11. 18. 08:45
스택(Stack)은 선형 구조의 알고리즘으로 LIFO(Last In First Out) 후입선출의 구조를 가지고 있다. 쉽게 말하면 그릇이 쌓여있는 모습을 생각하면 새로 쌓을 그릇은 맨 위에 쌓이고 그 중 사용할 그릇은 맨 위에 그릇을 사용하는 모습을 생각하면 이해하기 쉽다. 스택에서 자료를 넣는 것을 푸쉬(push)라 하고, 자료를 꺼내는 것을 팝(pop)이라 한다. 이런 선형구조를 이용해 리스트의 끝에서만 접근이 일어나기 때문에 제한적인 접근이 가능하다. 파이썬에서는 스택의 기본 구조를 리스트(list)로 사용한다. 리스트에는 리스트 멤버 함수인 append, push, pop이 있어 코드 구현이 매우 용이하다. def push(item): stack.append(item) def pop(): ret..
-
[Python Algorithms] 이중 연결 리스트Computer Science/Algorithms 2020. 11. 16. 23:11
이중 연결 리스트는 (단일) 연결 리스트와 다르게 두 개의 포인터를 이용해 양방향으로 이동할 수 있는 자료구조이다. (단일) 연결 리스트와는 연결 링크(포인터)가 하나 추가되었다는 것 이외에 큰 차이점은 없다. 1. 노드(Node) 정의하기 class Node: def __init__(self, data, next=None, prev=None): self.date = data self.next = next self.prev = prev (단일) 연결 리스트와의 차이점으로는 prev라는 포인터가 하나 더 생겼다는 것을 알 수 있다. 2. 이중 연결 리스트 초기화하기 class Node: def __init__(self, data, next=None, prev=None): self.date = data se..
-
[Python Algorithms] 연결 리스트 (Linked List)Computer Science/Algorithms 2020. 11. 14. 22:57
연결 리스트는 데이터와 다음 노드를 가리크는 링크를 묶어서 노드로 정의하여 사용하는 알고리즘이다. 순서가 있는 데이터 묶음이라는 점에서 배열과 유사하다고 생각할 수도 있다. 배열은 한 번 생성시 총 메모리를 확보해 프로그램 실행 중간에 크기를 변경할 수 없고 배열 안의 값을 정렬할 때에도 하나씩 메모리에 저장되어 있는 값을 바꿔주어야 한다. 하지만 연결 리스트는 배열과는 다르게 연속적이지 않은 데이터들을 링크로 서로 연결해줌으로써 배열이 가지는 단점을 보완할 수 있다. 1. 노드(Node) 정의하기 class Node: def __init__(self, data, next=None): self.data = data self.next = next 노드를 클래스로 정의할 때, 노드의 데이터인 data를 지정..
-
2. 컴퓨터의 동작 원리Computer Science/OS 2019. 7. 7. 16:07
1. 컴퓨터의 구조 컴퓨터의 구조는 컴퓨터 내부장치와 외부장치로 나눠져 있다. CPU, 메모리는 컴퓨터 내부장치에 해당되고 키보드, 마우스, 모니트 등은 외부장치에 해당된다. 2. 컴퓨터의 작업 처리 방식 컴퓨터의 작업 처리 방식은 컴퓨터의 외부장치에서 데이터를 읽어와 내부장치에서 연산 후 그 결과를 다시 외부장치로 보내주는 식으로 처리된다. 입력(Input)과 출력(Output) 컴퓨터로 데이터가 들어오는 것은 입력(input)이라 하고 데이터가 외부로 나가는 것을 출력(output)이라 한다. 이 둘은 함께 입출력(I/O: input output)이라 불려진다. CPU의 역할 - 컨트롤러(Controller) 컴퓨터의 각 하드웨어에는 CPU의 일종인 컨트롤러(controller)가 있다. 컨트롤러는 ..
-
1. 운영 체제(Operating System)란?Computer Science/OS 2019. 7. 6. 10:46
1. 운영체제란? 운영 체제는 하드웨어와 소프트웨어를 연결해주는 계층으로 하드웨어 바로 위의 계층에 해당한다. 운영 체제는 소프트웨어의 일종으로, 소프트웨어는 실행되기 위해 메모리 위에 올라가야 하고 따라서 운영 체제도 메모리 위에 올라가 있어야 동작할 수 있다. 한정적인 메모리 안에서 운영 체제 전체가 메모리에 올라가 있다면 메모리의 공간을 비효율적으로 사용하게 된다. 이런 문제를 방지하기 위해 운영체제는 항상 필요한 부분만 메모리에 올리게 된다. 이렇게 항상 메모리에 올라가 있는 운영체제의 일부분을 커널(kernel)이라 부른다. 2. 운영체제가 하는 일 운영 체제는 크게 두 가지 일을 한다. 1. 사용자의 편의 측면: 사용자가 컴퓨터를 사용할 때 편리하게 사용할 수 있는 환경을 제공 2. 하드웨어 ..