Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- unix i/o
- 금융데이터서비스분석가
- magic method
- 클래스
- Ta-Lib
- 파이썬
- 코스피
- 파이썬 자료구조
- adx
- 금융데이터분석
- bigo
- 파이썬 함수
- 큐
- 인스턴스변수
- 파이썬 알고리즘
- 국내주식마감시황
- 차별화장세
- VariableScope
- 자료구조
- 금융데이터분석가
- talib
- 스택
- LV1
- 시스템 수준 입출력
- 프로그래머스
- 서울디지털인재개발원
- 파이썬정렬
- 코스닥
- pml4
- 퀀트매매
Archives
- Today
- Total
IT Studying
자료구조 디큐(dequeue) 본문
반응형
이번 포스팅에서는 디큐에 대해서 알아보도록 하겠습니다.
1. 디큐란?
- 왼쪽과 오른쪽에서 모두 삽입과 삭제가 가능한 큐입니다. 그래서 두 가지 버전의 push와 pop연산을 하게 되고, 나머지 연산은 스택과 큐랑 유사합니다.
- Python에서는 collections라는 모듈에 deque라는 클래스로 dequeue가 이미 구현되어 있습니다.
2. 디큐 코드 구현 연습(Palindrome Check)
코드를 통해 디큐를 구현해보고 디큐를 활용하여 문제를 풀어보도록하겠습니다. Palindrome은 문자열이 좌우 대칭인 것입니다. radar같은 문자열을 입력받으면 True를 출력하고, Palindrome이 아닌 문자열은 False를 출력하는 함수를 만들어보도록 하겠습니다.
class deque:
def __init__(self, s):
self.items = list(s)
def append(self, c):
self.items.append(c)
def appendleft(self, c):
self.items.insert(0,c)
def pop(self):
return self.items.pop()
def popleft(self):
return self.items.pop(0)
def __len__(self):
return len(self.items)
def right(self):
return self.items[-1]
def left(self):
return self.items[0]
s = input()
def check_palindrome(s):
dq = deque(s)
palindrome = True
while len(dq) > 1:
if dq.left() != dq.right():
return False
else:
dq.popleft()
dq.pop()
return palindrome
print(check_palindrome(s))
- deque 클래스 코드를 살펴보시면 큐를 양방향으로 구현해놓은 것을 알 수 있습니다.
- palindrome검사할 시 문자열을 deque에 집어넣고 양끝값을 꺼내서 서로 비교해가면 해당 문자열이 palindrome인지 아닌지 알 수 있습니다.
궁금하시거나 잘못된 내용 있으면 댓글로 알려주시면 감사하겠습니다~
반응형
'파이썬 > 파이썬 자료구조' 카테고리의 다른 글
자료구조 큐(Queue) (0) | 2023.02.18 |
---|---|
자료구조 스택(Stack) (0) | 2023.02.18 |
파이썬 리스트 (0) | 2023.02.17 |
시간복잡도(BigO) (0) | 2023.02.17 |
파이썬 클래스(feat. 객체지향 프로그래밍) (1) | 2023.02.17 |
Comments