컴퓨터과학(9)
-
디지털 시스템과 수, 문자의 인코딩 방법
* 본 글은 [Introduction to Logic Design, 3rd ed. - Alan B. Marcovitz] 를 바탕으로 작성하였습니다. 디지털 시스템이란? 디지털 시스템이란, 임의의 불연속적인 입력(A, B, ..)을 받아 임의의 출력(W, X, ...)을 만드는 시스템을 말한다. 입력은 클럭 등 다양한 방식에 의해 이루어진다. 예를 들어, 세 개의 입력 A, B, C를 받아 두 개의 입력이 1일 때만 출력 Z = 1을 출력하는 시스템은 디지털 시스템이다. 이처럼 출력이 입력의 현재 값에만 의존하는 회로를 조합회로(combinational)라고 한다. 반면, 지난 시간의 입력 상태를 알아야 하는 회로를 순차회로(sequential)라고 한다. 대표적인 불연속 입력은 이진수로 이루어진다. 예를..
2024.04.14 -
[열혈자료구조] 6강. 스택(stack)
* 본 글은 [윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서] 를 바탕으로 작성하였습니다. 드디어 길고 길었던 연결 리스트가 무려 6개의 포스팅 만에 끝났다!! 이제 6강인 스택에 대해 다뤄 보자. 스택은 지난 번 코딩 연습 때 백준에서 다룬 바 있다. https://cascade.tistory.com/61 스택(stack)구조란? (백준 9012번, 10828번) 스택 구조란, 쌓여 있는(stack) 더미처럼 된 자료구조를 말한다. 그림처럼 쌓은 수건을 위에서부터 사용하면서, 빨래한 새 수건을 다시 위에 쌓으면 아래 있는 수건은 계속 안 써서 먼지가 쌓인다. cascade.tistory.com 스택의 정의는 지난 번 포스팅을 참고하도록. LIFO 구조라는 건 기억하고 가고, 어떤 기능을 구..
2024.04.05 -
[열혈자료구조] 5강. 연결 리스트(Linked List) 3 - (2)
* 본 글은 [윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서] 를 바탕으로 작성하였습니다. 드디어!!!!! 길고 길었던 연결 리스트 마지막 포스팅이다. 그동안 3개의 챕터에 걸쳐 연결 리스트에 관해 공부했고, 아래와 같은 내용을 공부했었다. 오늘 포스팅에서는 연결 리스트의 마지막 내용인 양방향 연결 리스트에 관해 다룰 예정이다. 3강 ADT와 배열 리스트 4강 단순 연결 리스트 5강 원형 연결 리스트, 양방향 연결 리스트 단순 연결 리스트나 원형 연결 리스트는 노드가 한쪽으로만 연결되어 있지만, 양방향 연결 리스트는 노드가 양쪽으로 연결되어 있다는 것이 차이점이다. 즉, 노드의 구조체 형태가 기존과 달리 아래와 같이 구성된다. typedef struct _node{ Data data; str..
2024.04.02 -
[열혈자료구조] 5강. 연결 리스트(Linked List) 3 - (1)
* 본 글은 [윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서] 를 바탕으로 작성하였습니다. 리스트 그림그리기 힘들군요 앞서 4강에서 구현한 단순 연결 리스트를 변형하여 원형 연결 리스트를 제작하자. 원형 연결 리스트는 단순 연결 리스트에서 머리에서 가장 먼 노드가 NULL을 가리키는 것이 아니라, 머리에서 가장 가까운 노드를 가리키도록 하여 원형 구조를 이루는 것을 말한다. 새로운 노드 1을 머리에 추가한다고 한다면 아래와 같이 변한다. 새로운 노드 1을 꼬리에 추가한다고 하면 아래와 같이 변한다. 이때, 마지막 노드를 가리키는 포인터 변수는 tail이고, 첫 노드를 가리키는 포인터 변수는 tail->next가 된다. 이렇게 원형으로 연결 리스트를 구현하는 것의 특징은, LNext 함수의 무..
2024.04.01 -
[열혈자료구조] 4강. 연결 리스트(Linked List) 2 - (1)
* 본 글은 [윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서] 를 바탕으로 작성하였습니다. 앞선 포스팅에서는 열혈자료구조 3장에서 다루었던 추상 자료형(ADT)과 배열로 정의한 리스트의 구현을 정리하였다. 4강부터는 배열이 아닌, "연결"을 기반으로 한 리스트의 새로운 정의에 대해 다룬다. 리스트를 배열로 정의하는 것의 단점은, 앞선 포스팅의 코드를 보면 알 수 있겠지만 최대 길이가 정해져 있다는 것이다. 즉 정적으로 100개의 메모리를 할당했으므로, 100개가 넘는 자료를 저장할 수 없다. 이에 따라 메모리를 동적으로 구성하여 리스트를 정의해야 한다. 이를 위해, 노드를 연결하여 리스트를 만드는 방식을 사용하자. 노드의 정의 노드(Node)는 데이터를 저장할 수 있으며 다른 노드와 연결이 ..
2024.03.30 -
[열혈자료구조] 3강. 연결 리스트(Linked List) 1 - (1)
* 본 글은 [윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서] 를 바탕으로 작성하였습니다. 추상 자료형(Abstract Data Type, ADT) 추상 자료형 = 각 기능의 구현 등 세부적인 내용은 나타내지 않고, 기능 그 자체만 나열한 것 예를 들어, 지갑을 정의하는 추상 자료형에 대해 생각해 보자. 지갑에는 100원짜리 동전과 5000원짜리 지폐가 들어갈 수 있다. 각 화폐의 개수를 변수로 하는 구조체를 이용하여 지갑을 정의하자. typedef struct _wallet { int num_coin_100; int num_bill_5000; }Wallet; 또한, wallet이라는 자료형에 관련된 연산을 결정하는 것도 자료형을 정의하는 데 필요하다. int TakeOutMoney(Wall..
2024.03.29