Linked List - 활용 스택(Stack) [스택의 원소: 리스트의 노드] - 스택 내 순서는 연결리스트의 링크를 통해 연결됨 - push: 연결 리스트의 맨 앞에 노드 삽입 - pop: 연결 리스트의 맨 앞 노드 반환/삭제 [변수 top] - 연결 리스트의 맨 앞 노드를 가리킴 - 초기상태: top = None 우선순위 큐(Priority Queue) 1) 우선순위 큐의 구현 - 연결리스트 이용한 우선순위 큐 2) 우선순위 큐의 기본 연산 - 삽입: enQueue - 삭제: deQueue [연결리스트 이용한 우선순위 큐 구현] - 연결리스트를 이용하여 자료 저장 - 원소를 삽입하는 과정에서 리스트 내 노드의 원소들과 비교하여 적절한 위치에 노드를 삽입하는 구조 - 리스트의 가장 앞쪽에 최고 우선순..
Linked List - 정렬 삽입 정렬 자료 배열의 모든 원소들을 앞에서 부터 차례대로 이미 정렬된 부분과 비교하여, 자신의 위치를 찾아냄으로써 정렬을 완성한다. [ 삽입 정렬의 정렬과정 ] 1) 정렬할 자료를 두 개의 부분집합 S 와 U로 가정한다. - 부분집합 S: 정렬된 앞부분의 원소들 - 부분집합 U: 아직 정렬되지 않은 나머지 원소들 2) 정렬되지 않은 부분 집합 U의 원소를 하나씩 꺼내며 이미 정렬되어 있는 부분집합 S의 마지막 원소부터 비교하면서 위치를 찾아 삽입한다. 3) 삽입 정렬을 반복하면서 부분집합 S의 원소는 하나씩 늘리고 부분집합 U의 원소는 하나씩 감소하게 한다. 4) 부분집합 U가 공집합이 되면 삽입 정렬이 완성된다. ✔ 시간 복잡도: O(n^2) 병합 정렬 여러 개의 정렬된..

연결 리스트(Linked List) 리스트(List) 1) 동적 배열로 작성된 순차 리스트 2) 자료의 삽입, 삭제 연산 - 원소의 이동 작업이 필요하다. 3) 원소의 개수가 많고 삽입, 삭제 연산이 빈번한 작업 - 소요되는 시간이 크게 증가 리스트 복사 # 1. new_list = old_list 주소의 복사, 얕은 복사 # 2. new_list = old_list[:] 슬라이싱(slicing), 깊은 복사 # 3. new_list = [] new_list.extend(old_list) ✔ extend(): 리스트를 추가하는 함수 깊은 복사 # 4. new_list = list(old_list) ✔ list() 깊은 복사 # 5. import copy new_lsit = copy.copy(old_lis..
Queue Queue 의 종류 1) 선형 큐: 간단하고 기본적인 형태이며, 리스트로 구현한다. 2) 원형 큐: 선형에서 발전된 형태이며, 리스트로 구현한다. 3) 연결 큐: 연결리스트 형식으로 구현한다. 4) 우선순위 큐 선형 큐 선형 큐의 특징 1) 1차원 리스트를 이용한 큐 - 큐의 크기 = 리스트의 크기 - front: 저장된 첫 번째 원소의 인덱스 - rear: 저장된 마지막 원소의 인덱스 2) 상태표현 - 초기상태 : front = rear = - 1 - 공백상태: front = rear - 포화상태: rear = n-1 (n: 리스트의 크기, n-1: 리스트의 마지막 인덱스) 원형 큐 1차원 리스트를 사용하되, 논리적으로 리스트의 처음과 끝이 연결되어 원형 형태의 큐를 이룬다고 가정하고 사용한..
Stack2 - 문제풀이 위주 문1: Forth T = int(input()) for test_case in range(1, T + 1): cases = input().split() stack = [] try: for i in range(len(cases)-1): if cases[i].isdigit(): stack.append(int(cases[i])) continue else: a = stack.pop() b = stack.pop() if cases[i] == '+': stack.append(b+a) continue elif cases[i] == '-': stack.append(b-a) elif cases[i] == '*': stack.append(b*a) else: if not b or not a: ..
Stack1 Stack 자료구조 ✔ 스택 구현 시 고려 사항: 리스트를 사용하여 스택을 구현하는 경우 - 장점: 구현이 용이 - 단점: 리스트의 크기를 변경하는 작업은 내부적으로 큰 오버헤드가 발생하는 작업으로 많은 시간을 소요 ✔ 해결 방법 1) 리스트의 크기가 변동되지 않도록 배열처럼 크기를 미리 정해 놓고 사용하는 방법 2) 동적 연결리스트를 이용하여 저장소를 동적으로 할당하여 스택을 구현하는 방법 - 장점: 구현이 용이 - 단점: 리스트로 구현하는 것보다 구현이 복잡함 괄호 검사 1) 괄호의 종류: 대괄호('[', ']'), 중괄호('{', '}'), 소괄호('(', ')') 2) 조건: (1) 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다. (2) 같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보..
List 2 - 정렬(Sort) 정렬(Sort) [셀렉션 알고리즘] 1) 저장되어 있는 자료로 부터 K 번째로 큰 혹은 작은 원소를 찾는 방법이다. (최소 값, 최대 값 혹은 중간 값을 찾는 알고리즘) 2) 셀렉션 선택과정 - 정렬 알고리즘을 이용하여 자료를 정렬 - 원하는 순서에 있는 원소를 가져오기 EX) k 번째로 작은 원소 찾는 알고리즘 1 번부터 k 번까지 작은 원소들을 찾아 List 앞쪽으로 이동시키고, List의 k번째를 반환한다. k가 비교적 작을 때 유용하며 O(kn)의 수행시간을 필요로 한다. def select(list, k): for i in range(0,k): min_index = i for j in range(i+1, len(list)): if list[min_index] > ..

List 2 - 2차원 리스트 2차원 리스트 1) 1차원 리스트를 묶어 놓은 리스트이다. 2) 2차원 이상의 다차원 리스트는 차원에 따라 인덱스를 선언한다. 3) 2차원 리스트의 선언: 세로길이(행의 개수), 가로길이(열의 개수) 를 필요로 한다. 4) 파이썬에서는 데이터 초기화를 통하여 변수 선언과 초기화가 가능하다. 리스트 초기화 # 1차원 리스트 초기화 #1) arr = [0,0,0,0,0] #2) arr = [0] * 5 # res = [0,0,0,0,0] #3) arr = [i for i in range(2,9) if i%2 == 0 ] # res = [2,4,6,8] # 2차원 리스트 초기화 #1) brr = [[1,2,3], [1,2,3], [1,2,3]] #2) brr =[[1,2,3]] ..
- Total
- Today
- Yesterday
- 데이터베이스
- 프로그래머스강의
- https
- 프로세스 주소공간
- 리스트
- CS
- 리스트 복사
- Greedy sort
- 프로그래머스
- 코드업 기초
- 이진탐색
- 완전탐색
- 자료구조와알고리즘 23강
- 보험
- CS 스터디
- 정렬
- 연결리스트활용
- 이차 리스트
- 파이썬
- 자바
- 자료구조
- 스터디
- 운영체제
- SW
- 리스트2
- 알고리즘
- CS.
- 리스트함축
- It
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |