1. ๋ฐฐ์ด
: ๋ฐ์ดํฐ๋ฅผ ๋์ดํ๊ณ , ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค์ ๋์ํ๋๋ก ๊ตฌ์ฑํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
: ํ์ด์ฌ์ ๋ณ๋์ Arrayํ์ ์ด ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ list๋ฅผ ํ์ฉ
: ๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ์ํด ์ฌ์ฉ
โก๏ธ ์์ฐจ์ ์ผ๋ก ์ ์ฅ (์ฐ์๋๊ณ ์ฐ๊ฒฐ๋ ๊ณต๊ฐ์ ์ ์ฅ)
โก๏ธ ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผ ๊ฐ๋ฅ
: ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ ๊ฐ๋ฅ : ์ฒซ๋ฒ์งธ ์์น์์ ์๋์ ์ธ ์์น๋ก ์ ๊ทผ
: ๊ฐ๋ณ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์๋ (immutable) - ์ด๊ธฐ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ค์ ํด์ผํจ
: ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ญ์ ๊ฐ ์ด๋ ค์ : ๊ธฐ์กด ๊ธธ์ด ์ด๊ณผ์ ๋ฐ์ดํฐ ์ถ๊ฐ ์ด๋ ค์, ์ค๊ฐ ๋ฐ์ดํฐ ์ญ์ ์ ๋ฐ์ดํฐ ์ฌ์ ๋ ฌ ํ์
* ํ์ด์ฌ์์์ ๋ฐฐ์ด
: list๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๊ธธ์ด ์ง์ ํ์์์, ๊ฐ๋ณ์ ์ด๊ฒ ์ฌ์ฉ๊ฐ๋ฅ
: ๋ฐฐ์ด ์์ฑ
1) python_list=[1,2,3] โจ ์ง์ ๋๊ดํธ ์์ ์์ฑ
2) python_list=list() โจ ๋น ๋ฆฌ์คํธ ์์ฑ
: ๋ฐฐ์ด ์์ ์ถ๊ฐ โจ append(data)
: ๋ฐฐ์ด ์์ ์ญ์ โจ del python_list[index]
# ๋ฐฐ์ด ์์ฑ
# ๋ฐฉ๋ฒ1) list() ์ฌ์ฉํ์ฌ ๋น ๋ฐฐ์ด ์ ์ธ
data_list = list()
print(data_list) #[]
# ๋ฐฉ๋ฒ2) ๊ฐ๋จํ ๋๊ดํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ์ ์ธ
data_list = [1,2,3,4]
print(data_list) #[1,2,3,4]
# ๋ฐฐ์ด๊ฐ ์ถ๊ฐ
# list.append(data)
data_list.append(5)
print(data_list) #[1,2,3,4,5]
# ๋ฐฐ์ด๊ฐ ์ญ์
# del list[index]
del data_list[0]
print(data_list) #[2,3,4,5]
2. ํ(Queue)
: FIFO(First in First Out) - ์ ์ ์ ์ถ ๊ตฌ์กฐ
: ํน์ ์์์ ์๋ฃ๋ฅผ ์ถ์ถํ๋๊ฒ์ด ์๋๋ผ ๋ฌด์กฐ๊ฑด ์์ฐจ์ ์ฒ๋ฆฌ
: ๋งคํ์ ์์ ์ค์ ์๊ณ ํ๋ฅผ ๊ตฌ๋งคํ๋ ์์๋ฅผ ๊ธฐ์ต!
: ํ๋ก์ธ์ค ์ค์ผ์ค๋ง ๋ฐฉ์ ๊ตฌํ์ ์ฃผ๋ก ์ฌ์ฉ
* ํ์ด์ฌ์์ ํ ๊ตฌํ
: ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ โก๏ธ import queue
: ๋ค์ํ ๊ตฌ์กฐ์ ํ๋ฅผ ์ง์
1) Queue() : ์ผ๋ฐ์ ์ธ FIFO๊ตฌ์กฐ์ ํ
2) LifoQueue() : ์คํ๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ ํ - ๋์ค์ ์ ๋ ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ถ์ถ๋๋ ๊ตฌ์กฐ
3) PriorityQueue() : ๋ฐ์ดํฐ๋ง๋ค ์ฐ์ ์์๋ฅผ ์ง์ ํ๊ณ ๊ทธ ์ฐ์ ์์๊ฐ ๋์ ์์ผ๋ก ๋ฐ์ดํฐ ์ถ์ถ - ์ ์ฅ์์ ๋ฌด์๋ฏธ(๋ฎ์์๋ก ๋์๊ฒ)
# ํ์์ฑ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
import queue
# 1) FIFO Queue
data_queue=queue.Queue()
# 2) LIFO Queue
data_queue=queue.LifoQueue()
# 3) Priority Queue
data_queue=queue.PriorityQueue()
: ํ ๋ฐ์ดํฐ ์ฝ์ โจ Queue.put(data)
: ํ ๋ฐ์ดํฐ ์ถ์ถ โจ Queue.get()
import queue
data_queue=queue.Queue()
# FIFO,LIFO์ฝ์
์ : put
data_queue.put(100)
data_queue.put("korea")
print(data_queue) # [100, "Korea"]
# Priority ์ฝ์
์ ํํ๋จ์๋ก! ์ฆ, ๊ดํธ๋ก ๋ฌถ์ด์ (์ฐ์ ์์,๊ฐ)์ผ๋ก ์ฝ์
prior_queue=queue.PriorityQueue()
prior_queue.put((1,"Nate"))
prior_queue.put((15,"Peter"))
prior_queue.put((8,"Brad"))
# ๋ฐ์ดํฐ ์ถ์ถ์ : get()
data_queue.get() #100
data_queue.get() #Korea
prior_queue.get() #Nate
prior_queue.get() #Brad
prior_queue.get() #Peter
* ํ์ด์ฌ queue ๋ด์ฅํจ์ ์ฌ์ฉํ์ง ์๊ณ list๋ฅผ ํ์ฉํ์ฌ ํ ๊ตฌํ
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
3. ์คํ(Stack)
: LIFO(Last in First Out) - ํ์ ์ ์ถ ๊ตฌ์กฐ
: ํน์ ์์์ ์๋ฃ๋ฅผ ์ถ์ถํ๋๊ฒ์ด ์๋๋ผ ๋ฌด์กฐ๊ฑด ์์ฐจ์ ์ฒ๋ฆฌ
: ์ ์๋ฅผ ์ฐจ๊ณก์ฐจ๊ณก ์๊ณ ๊ฐ์ฅ ๋ง์ง๋ง์ ์์ ์ ์ ๋จผ์ ํ์ฉํ๋ ๋ฐฉ์๊ณผ ๋์ผ
: ๊ตฌ์กฐ๊ฐ ๋จ์ํ์ฌ ๊ตฌํ์ด ์ฝ๊ณ , ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ฝ๊ธฐ ์๋ ์ฐ์
โก๏ธ ๋จ, ๋ฐ์ดํฐ ์ ์ฅ ๊ฐ์(์ฌ๊ทํจ์ ํธ์ถ ๊ฐ์)๋ฅผ ๋ฏธ๋ฆฌ ์ ํด์ผํ๋ฉฐ ์ ํ์ ์ : ๊ณต๊ฐ ๋ญ๋น ๋ฐ์ ์ฐ๋ ค
: ์ปดํจํฐ ๋ด๋ถ ํ๋ก์ธ์ค ์คํ ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ๋ฐ ์ฌ๊ทํจ์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ ์ฑ
* ํ๋ก์ธ์ค ์คํ๊ตฌ์กฐ ํํ with ์ฌ๊ทํจ์
def recursive(data):
if data < 0:
print ("the end")
else:
print(data)
recursive(data-1)
print("returned", data)
recursive(4)
'''
4
3
2
1
0
ended
returned 0
returned 1
returned 2
returned 3
returned 4
'''
* ํ์ด์ฌ์์ ์คํ ๊ตฌํ
: list๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ๋ฉฐ, ์ด๋ฏธ list๋ด์ฅํจ์์ธ append(d)๋ฅผ ํตํด put๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ pop()๊ธฐ๋ฅ์ ํตํด pop๊ธฐ๋ฅ์ ์ฌ์ฉ
data_stack = list()
data_stack.append(1)
data_stack.append(2)
print(data_stack) #[1,2]
data_stack.pop() #2
print(data_stack) #[1]
* ํ์ด์ฌ list ๋ด์ฅํจ์ ์ฌ์ฉํ์ง ์๊ณ ์คํ ํจ์ ๊ตฌํ
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
#๋ค์์ ์ธ๋ฑ์ค ์ธ๋ ๊ฒฝ์ฐ -1๋ถํฐ -1์ฉ!
data = stack_list[-1]
del stack_list[-1]
return data
๋๊ธ