'어서와! 자료구조와 알고리즘은 처음이지?' 중위표기법과 후위표기법 1) 중위 표기법 ✔ 연산자가 피 연산자들의 사이에 위치 (A+B) * (C+D) 2) 후위 표기법 ✔ 연산자가 피 연산자들의 뒤에 위치 AB+CD+* 3) 중위 표현식 → 후위 표현식 : 스택(Stack) 이용 알고리즘 설계 1. 연산자의 우선순위 설정 prec = { '*' : 3, '/' :3, '+' : 2, '-' :2, '(' :1 } 2. 중위 표현식을 왼쪽부터 한 글자 씩 읽어서 피연산자 이면 그냥 출력 3. '(' 이면 스택에 push, ')' 이면 '('이 나올 때까지 스택에서 pop 출력 4. 연산자이면 스택에서 그 보다 높거나 같은 우선 순위 것들을 pop 출력, 현재 만난 연산자는 스택에 push 3. 수식 끝까지..
'어서와! 자료구조와 알고리즘은 처음이지?' 스택(Stack) ✔ 자료(data element)를 보관할 수 있는 선형 구조이다. ✔ 데이터를 넣을 때는 한 쪽 끝에서 밀어넣어야 한다 (push 연산). ✔ 데이터를 꺼낼 때에는 데이터를 밀어 넣었던 쪽과 같은 쪽에서 뽑아 꺼내야 하는 제약이 있다 (pop 연산). ✔ 후입선출(LIFO, Last- In First - Out) 특징을 가진다. 스택에서 발생하는 오류 1. 비어있는 스택에서 데이터 원소를 꺼내려 하는 경우 ✔ 스택 언더 플로우 (Stack underflow) 2. 꽉 찬 스택에 데이터 원소를 넣으려 할 때 ✔ 스택 오버플로우(Stack overflow) 스택의 추상적 자료구조 구현 1. 배열(Array)을 이용하여 구현한다. ✔ Python..
'어서와! 자료구조와 알고리즘은 처음이지?' 양방향 연결리스트(이중 연결리스트) 양 쪽으로 링크를 연결하여 앞으로도 (다음 Node) 뒤로도 (이전 Node) 로도 진행이 가능한 연결리스트이다. 리스트의 처음과 끝에 Dummy Node를 두어 데이터를 담고 있는 Node들이 모두 같은 모양이 되도록 한다. class Node: def __init__(self, item): self.data = item self.prev = None self.next = None class DoubleLinkedList: def __init__(self, item): self.node_count = 0 self.head = Node(None) self.tail = Node(None) self.head.prev = None..
'어서와! 자료구조와 알고리즘은 처음이지?' 드디어 금요일이다........! 😆 연결리스트 장점 삽입과 삭제가 유연하다는 것이 가장 큰 장점 ! "특정 원소의 바로 다음"을 지정하여 원소를 삽입/삭제 하는 연산 정의 # 새로운 메서드 def insert_after(prev, newNode): #--> prev 노드 뒤에 newNode 삽입 def pop_after(prev): # --> prev 노드 뒤에 노드 삭제 맨 앞에 원소를 삽입하거나 삭제하는 연산을 이전과 동일한 방식으로 해결하기 위해 연결 리스트의 맨 앞에다가 데이터 원소를 담고 있지 않은 그냥 자리만 차지하는 노드인 더미 노드(dummy node)를 추가한다. # head가 가리키는 부분이 데이터를 담고 있지 않은 Node(None) 임을..
'어서와! 자료구조와 알고리즘은 처음이지?' 1. 연결 리스트 : 원소의 삽입 def insert_at(self, pos, now_node): pos가 가리키는 위치(1 head 조정 필요 if pos == 1: curr = self.head self.head = curr.next # pos 가 tail 위치인 경우 --> tail 조정 필요 if pos == self.nodeCount: prev = self.getAt(pos-1) curr = prev.next prev.next = None self.tail = prev # 그 외의 경우 if 1 < pos < self.nodeCount: prev = self.getAt(pos-1) curr = prev.next prev.next = curr.next ..
'어서와! 자료구조와 알고리즘은 처음이지?' 퇴근하고 공부하는게 쉽지 않은 거 같지만 그래도 강의 들으면서 하니까 책 보면서 하는 거 보다는 훨씬 나은 거 같다,, 👀 연결리스트(Linked List) 연결리스트에 각각 연결되어 있는 노드는 Data 와 Next 를 갖는다. Node 내의 데이터는 다른 구조로 이루어 질 수 있다. 예를 들어 문자열, 레코드, 또 다른 연결리스트가 가능하다. # Node 클래스 정의 class Node: def __init__(self, item): self.data = item self.next = None self.node_count = 0 특정 원소 참조 class Node: def __init__(self, item): self.data = item self.nex..
'어서와! 자료구조와 알고리즘은 처음이지?' 퇴근하고 싶다.....😂 재귀함수(Recursive function) 하나의 함수에서 자기 자신을 다시 호출하여 작업을 수행하는 것을 말한다. 피보나치 순열(Fibonacci) n = 0 → 0 n = 1 → 1 f(n) = f(n-1) + f(n-2) [ 문1. 피보나치 순열을 재귀함수와 반복문으로 풀이하라 ] # 재귀함수 def Fibonacci(n): if n == 0: return 0 elif n == 1: return 1 else: return Fibonacci(n-1) + Fibonacci(n-2) def solution(x): return Fibonacci(x) # 반복문 def solution(x): answer = 0 cur, next = 0,..
'어서와! 자료구조와 알고리즘은 처음이지?' 월요일에 연차 내고 여유롭게 연남동 카페에서 커피 랑 도넛 먹으면서 보내니까 행복하다 💕 정렬(sort)이란 복수의 원소로 주어진 데이터를 정해진 기준에 따라 새로 늘어놓는 작업이다. Python의 리스트(List)를 이용한다면, 직접 정렬 알고리즘을 구현할 필요 없이 리스트에 내장된 정렬 함수를 이용하여 리스트 원소들을 정렬할 수 있다. 함수(function) vs 메서드(method) 1. 함수(function) 함수명() ✔ 함수 이름을 통해 함수를 사용할 수 있다. ✔ 예) print(), type(), str(), int(), bool() ✔ 함수의 값을 변수에 대입할 수 있다. 예) res = function_example(value) 2. 메서드(..
- Total
- Today
- Yesterday
- 프로그래머스강의
- 운영체제
- 리스트2
- 데이터베이스
- 프로세스 주소공간
- 알고리즘
- 프로그래머스
- 리스트 복사
- 코드업 기초
- 리스트
- 리스트함축
- 완전탐색
- 자바
- https
- 네트워크
- 이진탐색
- It
- SW
- 자료구조와알고리즘 23강
- 이차 리스트
- 정렬
- 보험
- Greedy sort
- CS.
- CS
- 스터디
- CS 스터디
- 자료구조
- 파이썬
- 연결리스트활용
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |