스택이란?
영어로 Stack '쌓다'라는 의미로
프로그래밍에서 목록 혹은 리스트에서 접근이 한 쪽에서만 가능한 구조로
LIFO(Last In First Out)가 기본 원리
대표적인 내장함수 [ push | peek | pop ]
책이 3권 쌓여있다. 여기에 한권을 더 쌓는 것이 push
책을 위에서 내려다 보면 가장 위에있는 책만 확인할 수 있다. 이렇게 확인하는 것이 peek
가장 마지막에 들어온 책을 꺼내는 것이 pop
1. PYTHON 스택 직접 구현
list를 가진 클래스 선언 (클래스명: stack)
push = list.append def peek(self): return self[-1] self[len(self)-1]
list의 append함수는 하나의 배열의 뒤에 새로운 데이터를 추가하는 함수로 stack에서 push와 동일함.
peek함수는 스택에서 가장 마지막 값을 보는 것, return -1로 peek을 대신함.
pop함수는 파이썬에서 list의 내장함수로 이미 존재.
2. PYTHON List를 스택으로 활용하여 구현
인터넷창에서 이전페이지, 다음페이지의 구현방법
깊이 우선 탐색
영어로 Queue는 일이 처리되기를 기다리는 리스트
라는 의미
프로그래밍에서 목록 혹은 리스트에서 접근이 양쪽에서 가능한 구조로
FIFO가 기본원리이다.
대표함수 [ put | peek | get ]이 있다.
class Queue(list): put = list.append // 데이터를 넣는 함수 def peek(self): return self[0] // 맨 첫번째 값 0 def get(self): return self.pop(0)// 인덱스 값이 0번째인 데이터 추출
q = Queue() // Queue클래스를 q라고 선언 q.put(1) // q에 1 담음 q.put(5) // q에 5 담음 q.put(10) // q에 10 담음 print("my queue is : ", q) => my queue is : [1, 5, 10] print("removed value is : ", q.get()) =>removed value is : 1 print("my queue is : ", q) => my queue is : [5, 10] print("peeked value is : ", q.peek()) => peeked value is : 5 print("my queue is : ", q) => my queue is : [5, 10]
from queue import Queue // Queue클래스 import q = Queue() q.put(1) q.put(5) q.put(10) print("my queue is : ", q) => my queue is : [1, 5, 10] print("removed value is : ", q.get()) =>removed value is : 1 print("my queue is : ", q) => my queue is : [5, 10] print("peeked value is : ", q.peek()) => peeked value is : 5 print("my queue is : ", q) => my queue is : [5, 10]
q = [] q.append(1) q.append(5) q.append(10) print("my queue is : ", q) => my queue is : [1, 5, 10] print("removed value is : ", q.pop(0)) =>removed value is : 1 print("my queue is : ", q) => my queue is : [5, 10] print("peeked value is : ", q[]) => peeked value is : 5 print("my queue is : ", q) => my queue is : [5, 10]