본문 바로가기

Posts/CS

Posts/CS [Python 자료구조] 추상자료형 추상자료형이란? CodeIt 자료구조 수업을 정리한 내용입니다. 기능 연산이 "무엇"을 하는지를 의미합니다. 삽입 연산 기능 순서 데이터에서 원하는 위치에 데이터 저장 구현 기능을 "어떻게" 작성 하는지를 의미합니다. 연산시 필요한 기능 자체를 코드로 작성하는 것을 말합니다. 추상화 어떻게 구현되어 있는지 몰라도 기능만 알아도 사용할 수 있는 것 추상 자료형 자료구조를 추상화 한 것 데이터를 저장/사용할 때 기능만을 고려 리스트 사용 동적배열, 링크드리스트: 자료 구조 리스트: 추상 자료형 추상 자료형 vs 자료 구조 추상 자료형은 어떤 한 기능에 집중하여 구현이 필요 없으나 자료 구조의 경우 어떤 한 기능에 집중하려 한다면 코드 구현이 필요합니다. 추상 자료형을 생각하면 구현없이 코드의 맥락과 흐름에 .. 2022. 1. 30. 00:20
Posts/CS [Python 자료구조] 큐 (Queue) 💡 Goal - 큐를 이해한다. - 큐를 파이썬으로 구현한다. - 큐 특징 2가지 이상 말하기. 개념 FIFO(First In First Out)으로 동작하며 데이터간 순서를 약속하는 추상자료형을 말한다. 가장 먼저 들어온 데이터가 가장 먼저 삭제 대기열과 같은 개념 (ATM기 줄서있는 사람들 모습) 특징 deque를 사용해 큐 자료구조 구현 (doubly-ended-queue의 약자) deque는 내부적으로 doubly linked list로 구현 맨 앞, 뒤에 데이터를 삭제하고 삭제할 수 있게 하는 자료형 enqueue: 끝에 삽입 peek: 시작 개체값 리턴 dequeue: 시작 개체값 제거 큐의 활용 스케줄링 동시에 실행되는 여러 프로세스의 자원을 배정을 적절히 조절해 성능 개선 어떤 작업이 병렬.. 2022. 1. 9. 20:39
Posts/CS [Python 자료구조] 스택 (Stack) 💡 Goal - 스택을 이해한다. - 스택을 파이썬으로 구현한다. - 스택 특징 2가지 이상 말하기. 개념 LIFO(Last In First Out)으로 동작하며 데이터간 순서를 약속하는 추상자료형 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 마치 스시를 다 먹고 접시를 쌓아 올리는 형태와 같은 개념으로 처음 쌓은 접시가 가장 나중에 제거 특징 스택의 활용 컴퓨터 내부 프로세스 실행 구조의 함수 동작 함수는 가장 나중에 호출된 것이 가장 먼저 종료 웹 브라우저 방문 기록 역순 문자열 생성 구조가 단순해 구현이 쉬움 데이터를 삽입, 삭제, 접근이 가능한 자료형 파이썬으로 코드를 구현할때 deque를 사용하거나 list를 사용 스택은 단순히 빠른 성능을 위해 사용되기에 배열 구조를 활용해 구현 deque .. 2022. 1. 9. 17:42
Posts/CS [Python 자료구조] 해시테이블 (Hash Table) 해시 테이블 CodeIt 자료구조 수업을 정리한 내용입니다. 1. Key-Value 데이터 110호: "제임스" 하나의 key와 그 key에 해당하는 value를 말합니다. 하나의 key에는 하나의 value만 존재 2. Direct Access Table 배열 인덱스를 키로 이용해서 데이터를 저장하거나 가져오는 것을 Direct Access Table이라 말합니다. 하지만 위에 사진에서 볼 수 있듯이 사용하는 데이터의 갯수는 5개이지만 인덱스의 가장 큰 값으로 인해 총 길이가 942개중 937개가 낭비되는 현상이 발생합니다. 3. Hash Table 해시 함수와 배열을 함께 사용하는 자료구조를 말합니다. 원하는 크기의 배열을 생성 해시 함수를 이용해 저장할 key:value 데이터의 키를 배열 inde.. 2021. 12. 7. 00:19
Posts/CS [Python 자료구조] 링크드 리스트 (Linked List) 링크드 리스트란? CodeIt 자료구조 수업을 정리한 내용입니다. 링크드 리스트 배열이나 동적 배열처럼 데이터를 순서대로 저장 동적 배열처럼 요소를 계속 추가 가능 노드 노드 객체는 2가지의 속성을 가지고 있습니다. data와 next로 이루어져 있는데 data는 저장하고자 하는 정보를 말하며, next는 다음 노드의 레퍼런스를 말합니다. 첫번째 노드 객체는 head 노드라고 하며 head 노드의 메모리주소만 알고 있으면 연결되어 있는 모든 노드를 접근할 수 있습니다. (실제 메모리에선 여기저기 흝어져있음) class Node: def __init__(self, data): # 인스턴스 변수들의 초기값 setting self.data = data # 노드 저장 데이터 self.next = None # 다.. 2021. 11. 25. 23:55
Posts/CS [Python 자료구조] 배열 (Array) 배열이란? CodeIt 자료구조 수업을 정리한 내용입니다. 배열 파이썬은 C를 기반으로 만들어졌고 C의 배열을 이용해서 만들어진게 파이썬 리스트 C 배열은 크기 고정, 같은 데이터 타입만 가능 C 배열의 경우 데이터가 메모리에 연속적으로 저장 파이썬은 데이터가 연속적일수도 있고 아닌 아예 다른 곳에 저장될 수도 있음 파이썬의 경우 메모리에 데이터의 주소값을 저장 아무리 큰 값이어도 가리키기만 하는 역할이므로 C배열과 다르게 다양한 값 저장 가능 item_list = [10, "데이터", True, -4] 배열 인덱스 접근 찾고자 하는 위치의 주소(index)를 알고 있기에 시간복잡도는 O(1) 입니다. 배열 탐색 배열의 탐색은 특정 조건을 만족하는 값을 찾는 것을 말합니다. 예를 들어 하나의 배열에 특정.. 2021. 11. 23. 00:00
Posts/CS 파이썬으로 공부하는 자료구조 자료구조란? CodeIt 자료구조 수업을 정리한 내용입니다. 자료구조 우리가 데이터를 저장하고 관리하기 위한 구조입니다. 예를 들어 서점에서 개발책을 찾으려 할때 IT 구역으로 가서 언어별 또는 기술별 카테고리를 찾아서 책을 찾는 것과 비슷한 개념입니다. 늘 정해진 규칙속에 분리하여 정리를 해놓으면 그만큼 자료를 찾기도 쉽기 때문에 자료구조도 이러한 원리로 데이터의 효율적 접근 및 조작을 위한 저장 및 관리 방식으로 이해하면 쉽습니다. 데이터가 저장되는 곳 스토리지 데이터가 영구적 저장 데이터를 저장 or 받아오는데 시간이 느림 언제 사용할지 모르는 파일 저장 메모리 데이터를 임시 저장 문서 파일을 작성시는 메모리에 임시저장된 상태, 저장버튼을 눌렀을시 스토리지에 저장 데이터를 저장 or 받아오는데 시간.. 2021. 11. 13. 10:20
Posts/CS 백엔드 개발자 CS 개념 모음 Dev-Tech Study Repository 좋은 개발자로 성장하기 위해 부족한 기초 개념을 정리하였습니다. 지속적으로 추가됩니다. 프로세스 메모리상 실행중인 프로그램을 말하며 디스크로부터 메모리에 적재되 CPU 할당을 받을 수 있는 것을 말합니다. 프로세스는 최소 하나의 스레드를 보유하며 별도의 주소공간을 독립적으로 할당받습니다. 스레드 프로세스 내에 하나의 실행 단위를 말합니다. 프로세스내에서 스레드는 자원을 공유할 수 있으며 하나의 프로세스에서 다수의 스레드를 실행 단위로 구분한 것을 멀티스레드라 말합니다. 멀티 프로세스로 처리 가능한걸 멀티 스레드로 하는 이유? 멀티스레드로 작업시 멀티 프로세스보다 공유하는 통신 비용이 적고 프로세스 생성 후 자원을 할당하는 시스템 콜이 감소할 수 있기에 더 효.. 2021. 11. 8. 00:29