일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Protocol
- 밑바닥부터 시작하는 딥러닝
- Machine learning
- 실기
- IPV4
- network
- Algorithm
- 서브넷마스크
- 네트워크 자격증
- 코딩테스트
- Python
- dns
- Windows Server
- 프로토콜
- Django
- 자격증
- 파이썬
- 딥러닝
- 기본 정렬
- 네트워크 관리사 2급
- ICQA
- 자료구조
- 패스트캠퍼스
- deep learning
- Dynamic Programming
- 머신러닝
- 알고리즘
- FTP
- 네트워크 관리사
- 네트워크
- Today
- Total
목록코딩테스트/자료구조 이론 (7)
쳉지로그
키(Key)에 데이터(Value)를 저장하는 데이터 구조 Key를 통해 바로 데이터를 받아올 수 있어 속도가 빠름 파이썬 딕셔너리(Dictionary) 타입 - 별도 구현 필요 없음 장점 데이터 저장/읽기 속도가 빠르다. (검색 속도가 빠르다.) 키에 대한 데이터가 있는지(중복) 확인이 쉬움 단점 일반적으로 저장공간이 조금 더 많이 필요 여러 키에 해당하는 주소가 동일할 경우 충돌을 해결하기 위한 별도 자료구조가 필요 주요 용도 검색이 많이 필요한 경우 저장, 삭제, 읽기가 빈번한 경우 캐쉬 구현시 (중복 확인이 쉽기 때문) (관련 용어) 해쉬(Hash) : 임의의 데이터를 고정 길이로 변환하는 것 해쉬 테이블(Hash Table) : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 해싱 함수(Ha..
알고리즘 복잡도 시간 복잡도: 알고리즘 실행 속도 공간 복잡도: 알고리즘이 사용하는 메모리 사이즈 시간 복잡도의 주요 요소는 "반복문" 알고리즘 성능 표기법 대문자 O 표기법 O(1) < O( 𝑙𝑜𝑔𝑛 ) < O(n) < O(n 𝑙𝑜𝑔𝑛 ) < O( 𝑛^2 ) < O( 2^𝑛 ) < O(n!)
이중 연결 리스트라고도 함 장점: 양방향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능 위 코드에서 노드 데이터가 특정 숫자인 노드 앞에 데이터를 추가하는 함수를 만들고, 테스트해보기 위 코드에서 노드 데이터가 특정 숫자인 노드 뒤에 데이터를 추가하는 함수를 만들고, 테스트해보기
연결 리스트 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 배열의 단점(데이터 추가/삭제의 어려움)을 극복한 자료 구조 장점 미리 데이터 공간을 미리 할당하지 않아도 됨 단점 연결을 위한 별도 데이터 공간이 필요하므로, 저장공간 효율이 높지 않음 연결 정보를 찾는 시간이 필요하므로 접근 속도가 느림 중간 데이터 삭제 및 추가 시, 앞뒤 데이터의 연결을 재구성해야 하는 부가적인 작업이 필요함 기본 구조 노드(Node): 데이터 저장 단위 (데이터값, 포인터) 로 구성 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간
데이터를 제한적으로 접근할 수 있는 구조 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조(LIFO) 큐: FIFO 정책 스택: LIFO 정책 장점 구조가 단순해서, 구현이 쉽다. 데이터 저장/읽기 속도가 빠르다. 단점 (일반적인 스택 구현시) 데이터 최대 갯수를 미리 정해야 한다. 파이썬의 경우 재귀 함수는 1000번까지만 호출이 가능함 저장 공간의 낭비가 발생할 수 있음 미리 최대 갯수만큼 저장 공간을 확보해야 함 (참고) 대표적인 스택의 활용: 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 push(): 데이터를 스택에 넣기 pop(): 데이터를 스택에서 꺼내기 스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현..
줄을 서는 행위와 유사 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 예)음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장 FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대 (참고) 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 Enqueue: 큐에 데이터를 넣는 기능 Dequeue: 큐에서 데이터를 꺼내는 기능 # Queue()로 큐 만들기 import queue # FIFO Queue (일반적인 큐) data_queue = queue.Queue() data_queue.put('hello') # enqueue data_queue.put(2) data_queue.qsize() #..
같은 종류의 데이터를 효율적으로 관리하기 위해 사용 같은 종류의 데이터를 순차적으로 저장 장점: 빠른 접근 가능 첫 데이터의 위치에서 상대적인 위치로 데이터 접근(인덱스 번호로 접근) 단점: 데이터 추가/삭제의 어려움 미리 최대 길이를 지정해야 함 (참고) range(stop): range(10)은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 range(start, stop): range(1, 11)은 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 range(start, stop, step): range(0, 20, 2)은 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 start, stop, step은 음수로 지정 가능 # 1차원 배열 data_list = [1, 2, 3, ..