* ์ด ๊ธ์ ๋ค์ด๋ฒ ๋ถ์คํธ ์ฝ์ค์ ์ธ๊ณต์ง๋ฅ(AI) ๊ธฐ์ด ๋ค์ง๊ธฐ ๊ฐ์๋ฅผ ์๊ฐํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
์ฌ๋ด)์ผ๋ง์ ์ธํด ๋ชจ์๋ฉด์ ์ ์ฐ์ฐํ ์ฐธ์ฌํ ๊ธฐํ๊ฐ ์๊ฒผ๋๋ฐ ์คํ๊ณผ ํ๋ฅผ ํท๊ฐ๋ ค๋ฒ๋ ธ๋ค.
ํ๋ก์ ํธ ์์ฃผ๋ก ์งํ๋๋ ์์ ์ด ๋ง์์ด์ ๊ธฐ์ด๋ฅผ ์์ด๋ฒ๋ฆฐ๊ฒ ํ๋ฆผ์๋ค. 0ใ 0
๋ค์ ์ด์ฌ์ผ๋ก ๋์๊ฐ ๊ผผ๊ผผํ๊ฒ ์ ๋ฆฌํด ๋ณด์.
1) ์คํ Stack (=์ฌ๋ค๋ฆฌ. ์ ์ผ ๋์ค์ ์ฌ๋ผ๊ฐ ์ฌ๋์ด ๋จผ์ ๋ด๋ ค์์ผ ์ ์ฌ๋๋ค์ด ๋ด๋ ค์ด)
- ๋์ค์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ฐํํ๋๋ก ์ค๊ณ๋ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
- LIFO (Last In First Out)
- ๊ธฐ๋ฅ : Push, Pop, Top, Empty
- ๊ตฌํ : List
- Push : ์์๋ฅผ ์ฝ์ ํ๋ ํจ์
list.append(element)
- Pop : ์ ์ผ ๋์ค์ ์์๋ฅผ ๋ฐํํ๊ณ ์ญ์ ํ๋ ํจ์
list.pop()
- Top : ์ ์ผ ๋ง์ง๋ง ์์๋ฅผ ์ถ๋ ฅํ๋ ํจ์
- isEmpty : ์คํ์ด ๋น์๋์ง ํ์ธํ๋ ํจ์
์ฐธ๊ณ ) ํด๋์ค๋ฅผ ์ด์ฉํด ์คํ์ ๊ตฌํํด๋ณด์.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Class Stack(): def __init__(self): self.stack=[] def push(self, element): self.stack.append(element) def isEmpty(self): if(len(self.stack)==0): return True return False def top(self): if(self.isEmpty()): return -1 return self.stack[-1] def pop(self): if(self.isEmpty()): return -1 return self.stack.pop() | cs |
์์ ) ์คํ๊ตฌ์กฐ๋ฅผ ํ์ฉํด ์ ๋ ฅ๋ ๊ธ์๋ฅผ ์ญ์์ผ๋ก ์ถ๋ ฅํด ๋ณด์.
word=input() #๋ฌธ์์ด ์
๋ ฅ
word_list=list(word) #๋ฌธ์์ด์ ๋ฆฌ์คํธ๋ก ๋ณํ
for word_len in range(len(word_list)):
word_list.pop()
2) ํ Queue (=์ฃผ๋ฌธ. ๋จผ์ ๋ค์ด๊ฐ ์ฃผ๋ฌธ์ ์ฐ์ ์ผ๋ก ์ฒ๋ฆฌ)
- ๋จผ์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ฐํํ๋๋ก ์ค๊ณ๋ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
- FIFO (First In First Out)
- ๊ธฐ๋ฅ : Put, Get, isEmpty
- ๊ตฌํ : List
- Put : ์์๋ฅผ ์ฝ์ ํ๋ ํจ์
list.append(element)
- Get: ์ ์ผ ์ฒ์ ์์๋ฅผ ๋ฐํํ๊ณ ์ญ์ ํ๋ ํจ์
list.pop(0)
- isEmpty : ํ๊ฐ ๋น์๋์ง ํ์ธํ๋ ํจ์
์ฐธ๊ณ ) ํด๋์ค๋ฅผ ์ด์ฉํด ํ์ ๊ตฌํํด๋ณด์.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Class Queue(): def __init__(self): self.queue=[] def put(self, element): self.queue.append(element) def isEmpty(self): if(len(self.queue)==0): return True return False def get(self): if(self.isEmpty()): return -1 return self.queue.pop(0) | cs |
3) ํ์ด์ฌ์์ ์ ๊ณตํ๋ ํ ๋ชจ๋
์คํ์ ์ผ๋ฐ ๋ฆฌ์คํธ๋ก๋ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ง๋ง,
ํ์ ๊ฒฝ์ฐ get()ํจ์ ์คํ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(1)์ด ์๋ O(N)์ด ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ deque ๋ชจ๋์ ๋ณ๋๋ก ์ฌ์ฉํ๋ฉด ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ค.
import queue
1 2 3 4 5 6 7 8 9 10 | import queue #ํ ๋ชจ๋์ ํ ํด๋์ค ๊ฐ์ฒด ์ ์ธ quque_one= queue.Queue() #์ ์ธ ๋ ํ ๊ฐ์ฒด์ ์์ ์
๋ ฅ data.put(element) #ํ ๊ฐ์ฒด์์ ์์ ํ๋์ฉ ๊บผ๋ด๊ธฐ :FIFO print(data.get()) | cs |
import collections.deque
(doubled ended queue๋ก ์๋ฐฉํฅ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌํ๋จ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from collections import deque #๋ํ ๋ชจ๋์ ๋ํ ํด๋์ค ๊ฐ์ฒด ์ ์ธ queue_two = deque() #์ ์ธ ๋ ํ ๊ฐ์ฒด์ ์์ ์
๋ ฅ ##์ผ๋ฐ queue_two .append(element) ##์ผ์ชฝ์ ์์ ์
๋ ฅ queue_two .appendleft(element) ##์ค๊ฐ(list_index)์ ์์ ์
๋ ฅ queue_two .insert(list_index, element) #์ ์ธ ๋ ํ ๊ฐ์ฒด์์ ์์ ํ๋์ฉ ๊บผ๋ด๊ธฐ ##์ผ๋ฐ print(queue_two.popleft()) ##์ค๋ฅธ์ชฝ print(queue_two.pop()) | cs |
'์๊ณ ๋ฆฌ์ฆ๐ฅ > ๊ฐ๋ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ ์ฝ๋ฉํ ์คํธ ๊ธฐ๋ณธ] 0. ์๋ฃํ์ ์ข ๋ฅ์ ํฌ๊ธฐ (0) | 2023.06.21 |
---|---|
[ํ์ด์ฌ ์ฝ๋ฉํ ์คํธ ๊ฐ๋ ] 2. ๋ฐํฌ(Deque) (0) | 2023.05.10 |
[ํ์ด์ฌ ์ฝ๋ฉํ ์คํธ ๊ฐ๋ ] 1-1. ์ฐ๊ฒฐ๋ฆฌ์คํธ - ๋ฌ๋ (0) | 2023.05.04 |
[ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ] 3. ์ปฌ๋์ Collections (0) | 2023.01.08 |
[ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ] 2. ํํ, ์ธํธ, ๋์ ๋๋ฆฌ (0) | 2023.01.07 |