본문 바로가기

전체 글221

[자료구조] ep5) 스택(Stack) ㅇ스택 ADT: 임의의 개체를 저장하며, 후입선출(Last-In First-Out, LIFO) 순서를 따른다삽입(push)과 삭제(pop)는 스택의 top(스택 포인터)이라 불리는 위치에서 수행  - 직접 응용: 웹페이지들의 기록, ctrl+z, Window OS에서 겹쳐진 윈도우들, C++이나 JVM에서 메서드의 연쇄적인 호출, 재귀의 구현 등- 간접 응용: 알고리즘 구현, 자료구조 구현   우리는 스택을 배열과 리스트 2가지 방법으로 구현할 수 있다   ※ 삽입과 삭제가 특정위치에서만 수행되므로, 헤더노드는 불필요        문제) 배열을 이용해 스택을 구현하시오원소 : 영문자 다음 연산을 지원해야 함.- push(stack, ‘c’) : stack의 top에 원소를 추가한다. stack이 이미 꽉.. 2024. 6. 7.
[데이터베이스] ep1) DB 모델 ㅁ논리적 데이터 모델들 1. 계층형 데이터 모델 2. 네트워크형 데이터 모델 3. 관계형 데이터 모델(RDB: Relational DataBase) - 우리는 이 RDB에 대해 앞으로 지겹도록 다룰 것이다 ㅁRDB 데이터 모델: 2차원 테이블(릴레이션) 형태로 데이터를 표현 ㅇ스키마(schema): db에 저장되는 데이터 구조와 제약조건을 정의한 것 최상단 첫 행이라 생각하자 ㅇ튜플(tuple): db내의 주어진 목록과 관계있는 속성값의 모음 한 행이라 생각하자 ㅇ속성: 개체 고유의 특성 (db를 구성하는 가장 작은 논리적 단위) 한 열이라 생각하자 ㅇ인스턴스(instance): 튜플들의 집합 행들의 집합이라 생각하자 ㅇ도메인(domain): 하나의 속성값 집합 ㅇ차수(Degree): 속성의 전체 개수 .. 2024. 5. 3.
[데이터베이스] ep0) 파일시스템 vs 데이터베이스 데이터베이스 등장 이전에는 보통 파일시스템을 이용하여 데이터를 관리하였다ㅇ파일시스템(File System): 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제(운영체제에서 보통 한 챕터로 다룬다, 예전에는 학부 수업으로도 개설되어 있었다) 하지만 이런 파일시스템에는 문제가 두 가지 존재했다1. 데이터 종속성 2. 데이터 중복성  따라서 파일시스템의 단점들을 해결하고자 나온 것이 바로 데이터베이스(db)이다ㅇ데이터베이스(DB): 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합데이터를 보다 효율적으로 처리하기 위하여 개발된 것으로 같은 데이터가 중복되는 문제를 없앨 수 있으며, 업무가 확대되어도 새로 파일을 준비할 필요가 없다는 장점이 있다ㅇDBM.. 2024. 5. 3.
[자료구조] ep4+) 집합 ADT 활용문제들 문제1) 두 개의 집합 A와 B를 입력받아, A가 B의 부분집합인지를 검사하는 프로그램을 작성하라1) 집합은 오름차순 양의 정수로 저장 및 출력되어야 한다.2) 공집합은 공집합을 포함한 모든 집합의 부분집합이다.​3) 입력: 프로그램은 두 개의 집합 A, B를 차례로 표준입력받는다. 한 개의 집합을 나타내는 두 개의 입력 라인은 다음과 같이 구성된다. 첫 번째 라인: 정수 n (집합 크기, 즉 집합 원소의 개수) 두 번째 라인: 집합의 원소들 (오름차순 양의 정수 수열). 공집합은 첫 번째 라인은 0, 두 번째 라인은 존재하지 않는다.4) 출력: A ⊂ B이면 0을 출력하고, 그렇지 않으면 B에 속하지 않은 A의 가장 작은 원소를 표준 출력한다.5) 모든 집합은 헤더 노드가 없는 단일연결리스트(singl.. 2024. 5. 3.
[자료구조] ep4) 집합(Set) ㅇ집합 ADT: 유일한 개체들을 담은 용기 - 하나의 집합 ADT에는 중복되는 개체가 없으며 순서 또한 없다 (우리가 흔히 아는 집합형태)- 직접 응용: 키워드 검색엔진, 집합론에 관련된 다양한 계산- 간접 응용: 알고리즘을 위한 보조 자료구조, 다른 자료구조를 구성하는 요소 집합은 배열로 구현이 가능하지만 연결리스트로도 구현이 가능하다(각 노드는 하나의 집합원소를 표현) 집합 ADT의 주요 메소드 3가지ㅇunion(A, B): A, B집합의 합집합을 반환  ㅇintersect(A, B): A, B집합의 교집합을 반환  ㅇsubtract(A, B): A, B집합의 차집합(A - B)을 반환​​     참고 및 출처: 데이터 구조 원리와 응용(국형준교수님), C언어로 쉽게 풀어 쓴 자료구조(천인국) 2024. 5. 3.
[자료구조] ep3-3) 다중연결리스트(Multi Linked List) 리스트의 확장: 공유 개념두 개의 배열을 이용하여 원소 및 그룹 리스트를 각각 구현한다 ㅇ다중연결리스트: 양방향 및 다중 방향 검색이 가능한 연결리스트     활용) 인터넷 쿠폰 사이트 '쿠몬'• 쿠폰의 총 가입자 수는 NG 명이며, 제공되는 쿠폰의 종류는 NE 종이다. 초기 데이터구조는 가입자의 배열 Groups(크기 NG)와 쿠폰의 배열 Elements(크기 NE)로 구성된다. 어떤 가입자 g가 어떤 쿠폰 e를 구매하면 삽입 알고리즘을 통해 다중연결리스트 내에 (e, g) 노드가 생성된다.• 쿠폰의 보유는 가입자 당 종별 최대 1 매로 제한한다.• NG = 5, NE = 4를 사용하고 가입자명은 [A,B,C,D,E]를 쿠폰 명은 [1,2,3,4]를 사용하시오.• 주함수에서 반복적으로 사용자의 명령코드.. 2024. 5. 3.
[자료구조] ep3-2) 이중연결리스트(Double Linked List) ㅇ이중연결리스트: 노드 간의 링크가 두 개     활용) 영문자 리스트 ADT순위는 1부터 시작한다고 가정하며 순위 정보가 유효하지 않으면 화면에 에러 메시지 "invalid position"을 출력하고, 해당 연산을 무시한다   두 가지 방법이 있다첫 번째 방법: 전역변수 사용 x- 헤더노드, 트레일러노드, 리스트의 크기에 대한 전역변수 사용 x (전체코드)#include #include typedef struct NODE { char element; struct NODE* prev; struct NODE* next;} NODE;void add(NODE* head, int rank, char element);void delete(NODE* head, int rank);void get(NODE* head.. 2024. 5. 3.
[자료구조] ep3-1) 단일연결리스트(Single Linked List) ㅁ리스트 ADT: 여러 개의 노드들이 순차적으로 연결된 형태를 갖는 자료구조응용 예: 스택, 큐, 집합 / 소규모 db(주소록 등) or 더 복잡한 데이터구조 재료 ※노드(node): 커다란 자료구조의 일부분 하나 하나를 의미e.g. 리스트의 노드, 트리의 노드  리스트는 배열과 쓰임새가 비슷해 보통 많이들 비교한다    ㅇ단일연결리스트: 노드 간의 링크가 하나     활용) 다항식을 표현하는 연결리스트한 개의 다항식(polynomial)을 한 개의 헤더 단일연결리스트로 표현하는 방식(연결리스트의 각 노드는 차수의 내림차순으로 유지하고, 계수가 0인 항의 노드는 유지하지 않음) 여기서 다항식의 덧셈을 구하는 프로그램을 만들자   (전체 코드)#include #include #pragma warning (.. 2024. 5. 3.
[운영체제] ep3) 스레드(thread) [컴퓨터 구조] ep5) 스레드 파트를 복습하자스레드: 실행의 단위- 하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위- 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위 https://claremont.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-ep5-CPU-%EC%84%B1%EB%8A%A5-%ED%96%A5%EC%83%81-%EA%B8%B0%EB%B2%95 [컴퓨터 구조] ep5) CPU 성능 향상 기법세계 곳곳의 과학자들과 엔지니어들은 조금이라도 더 빠른 CPU를 만들기 위해 혈색이다 이번 장에서는 CPU 설계 기법과 명령어 처리 기법들에 대해 알아보겠다 ㅇ클럭 "컴퓨터 부품들은 클럭이라clarem.. 2024. 4. 8.