๐์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ - 2
์ค๋ ๋ค์ ๊ฐ์ ๋ชฉ๋ก
- ๋ฐฐ์ด
- ํ์ด์ฌ๊ณผ ๋ฐฐ์ด
- ํ(Queue) - 1
- ํ(Queue) - 2
๋ฐฐ์ด (Array)
๋ฐฐ์ด?
๋ฐ์ดํฐ๋ฅผ ๋์ดํ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค์ ๋์ํ๋๋ก ๊ตฌ์ฑํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
ํ์ด์ฌ์์๋ ๋ฆฌ์คํธ ํ์
์ด ๋ฐฐ์ด ๊ธฐ๋ฅ์ ์ ๊ณต
๋ฐฐ์ด์ด ํ์ํ ์ด์ ?
๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ ๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅ
๋ฐฐ์ด์ ์ฅ์
- ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ
๋ฐฐ์ด์ ๋จ์
- ๋ฐฐ์ด ์ ์ธ์ ์ต๋ ๊ธธ์ด๋ฅผ ์ง์ ํด์ผํ๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ์ถ๊ฐ๊ฐ ์ด๋ ต๋ค
- ์ค๊ฐ์ ์๋ ๋ฐ์ดํฐ ์ญ์ ์
(๋ฐ์ดํฐ๊ฐ ์ด์ด์ ธ์์ด์ผ ํ๋ ๊ฒฝ์ฐ) ์๊ฐ์ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ค.
๋ค์ ๋๊ธด ๋ฐ์ดํฐ๋ฅผ ์์ผ๋ก ๋์ด์์ผํ๊ธฐ ๋๋ฌธ
(๋ฐ์ดํฐ๊ฐ ๋์ด์ ธ๋ ์๊ด ์๋ ๊ฒฝ์ฐ) ๊ณต๊ฐ์ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ค.
์ค๊ฐ์ ์ฌ์ฉํ์ง ์๋ ๋น ๊ณต๊ฐ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ
์ฌ๊ธฐ์ ๋งํ๋ ๋ฐฐ์ด์ ๋จ์ ์ ํ์ด์ฌ์์๋ ๊ฑฐ์ ์กด์ฌํ์ง ์๋๋ค.
ํ์ด์ฌ์ ๋ฆฌ์คํธ ๋ฑ์ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ๋๋ฐ ๋ฆฌ์คํธ๋ ์ต๋๊ธธ์ด๋ฅผ ์ง์ ํ ํ์๊ฐ ์๋ค.
์ต๋๊ธธ์ด๊ฐ ๋์ด๊ฐ๋๋ผ๋ ์ถ๊ฐํ ์ ์๊ณ , ์ค๊ฐ์ ๊ฐ๋ง ์ง์ฐ๋ ๊ฒ์ด ์๋ ๊ณต๊ฐ์ ์ญ์ ํ ์๋ ์๋ค.
๋ฐ๋ผ์ c์ธ์ด์์์ ๋ฐฐ์ด์ ํ๋ฒ ํ์ธํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
C์์์ ๋ฐฐ์ด
/*
๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๊ธ์์ + 1๋ก ์ง์ ํ ์ด์ ๋ ๋ง์ง๋ง์ ๋ฌธ์์ด์ ๋์ ์๋ฏธํ๋ ๋ ๋ฌธ์๊ฐ ํฌํจ๋๊ธฐ ๋๋ฌธ
ex)he\0, she\0
*/
char str1[3] = "he";
char str2[4] = "she";
printf("%s\n", str1);
printf("%s\n", str2);
์ด์ฒ๋ผ c์์๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ค์ผํ๊ณ , ๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ํฐ ๊ฐ์ ๋ฃ์ ์ ์๋ค.
(c๊ฐ ์๋ ํฌ์ฉ์ ์ด๋ผ ๋ฃ์์๋ ์์ง๋ง ์ ๋๋ก ์๋์ ์ํ๋ค.)
๋ฆฌ์คํธ๋ฅผ ํ์ฉํ 1์ฐจ์ ๋ฐฐ์ด
๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ 1์ฐจ์ ๋ฐฐ์ด์ด๋ค.
d1_array = [1, 2, 3, 4, 5]
d1_array
๋ง์ง๋ง์ ๋ณ์๋ช ์ ์ฌ์ฉํ๋ฉด, ๋ฐฐ์ด(๋ฆฌ์คํธ)์ ๊ฐ๋ค์ด ์ถ๋ ฅ๋๋ค.
๋ฆฌ์คํธ๋ฅผ ํ์ฉํ 2์ฐจ์ ๋ฐฐ์ด
๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ 1์ฐจ์ ๋ฐฐ์ด์ด๋ค.
d2_array = [[1, 2, 3], [4, 5, 6]]
d2_array
1์ฐจ์ ๋ฐฐ์ด์ ํ์ฉํ ์ฃผ๋ฌธ๋ฆฌ์คํธ
1์ฐจ์ ๋ฐฐ์ด๋ก ์ฃผ๋ฌธ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๊ณ 2๋ฒ์งธ์ ์ด๋ค ์ฃผ๋ฌธ์ด ๋ค์ด์๋์ง ํ์ธํด๋ณด์
orderlist = ['ํํผ๋ก๋ํผ์', '๊ณ ๊ตฌ๋งํผ์', '๊ฐ์ํผ์']
orderlist
์ฃผ๋ฌธ๋ฆฌ์คํธ๋ฅผ ์ด๋ ๊ฒ ๊ตฌํํ๊ณ , 2๋ฒ์งธ๋ก ์ฃผ๋ฌธ๋ ํผ์๊ฐ ์ด๋คํผ์์ธ์ง ์์๋ณด์
orderlist = ['ํํผ๋ก๋ํผ์', '๊ณ ๊ตฌ๋งํผ์', '๊ฐ์ํผ์']
print(orderlist[1])
orderlist[2]
๊ฐ ์๋ ์ด์ ๋, ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๋ค.
๋ฐ๋ผ์, n๋ฒ์งธ๋ก ์ฃผ๋ฌธ๋ ํผ์๋ orderlist[n-1]
์ ์ ์ฅ๋์ด์๋ค.
2์ฐจ์ ๋ฐฐ์ด์ ํ์ฉํ ์ ์ DB
2์ฐจ์ ๋ฐฐ์ด๋ก [๊ตญ์ , ์ด๋ฆ]์ ์ ์ฅํ๊ณ ์ด๋ฆ์ผ๋ก ์ ์ ์ ๊ตญ์ ์ ์ฐพ๋ ํจ์๋ฅผ ๊ตฌํํด๋ณด์
user_db = [['Actor', '๊ฐ๋์'], ['Singer', 'Dan Reynolds']]
def searchWithName(name):
for elem in user_data:
if elem[1] == search:
return elem[0]
name = 'Dan Reynolds'
print(searchWithName(name))
user_data
์์ ํ๋์ ์์๋ฅผ ๊บผ๋ด์ด ์ด๋ฆ์ด ์ผ์นํ๋ค๋ฉด ๊ตญ์ ์ ๋ฐํํ๋ ํจ์๋ฅผ ๋ง๋ค์๋ค.
์ผ์นํ๋ ๊ฒ์ด ํ๋๋ ์๋ค๋ฉด, ์์์ None๋ฅผ ๋ฐํํ ๊ฒ์ด๋ค
์ฐ์ต๋ฌธ์
๋ฌธ์์ด๋ค์ด ๋ค์ด๊ฐ์๋ 1์ฐจ์ ๋ฐฐ์ด์์ M์ด ๋ค์ด๊ฐ ๊ฐฏ์๋ฅผ ๊ตฌํด๋ผ
dataset = ["Mr hello man", "bye Mr hello"]
m = 0
for data in dataset:
for ch in data:
if ch == 'M':
m += 1
print(m)
ํ (Queue)
ํ?
๋จผ์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์จ๋ค.
์ฃผ๋ก First In First Out(FIFO)๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ. (Last In Last Out์ด๋ผ๊ณ ๋ ํ๋ค. ์ด ๊ฐ์์์ ์ฒ์๋ค์ด๋ด. ์ ์์ฐ๋ ๋ง)
ํ์ค์์์ ๋ํ์ ์ธ ์๋ก ์ค์๊ธฐ๊ฐ ์๋ค.
์ฉ์ด
- Enqueue : ๋ฐ์ดํฐ๋ฅผ ๋ฃ์
- Dequeue : ๋ฐ์ดํฐ๋ฅผ ๊บผ๋
ํ์ด์ฌ์ queue๋ผ์ด๋ธ๋ฌ๋ฆฌ
queue.Queue()
: ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ, FIFO๋ฅผ ๋ฐ๋ฆ
quque.LifoQueue()
: LIFO๋ฅผ๋ฐ๋ฆ(Last In First Out)
์คํ๊ณผ ๊ฐ์๋ฐ ์ ์ธ๊น? (์๊ฐ์ ์ผ๋ก๋ ๊ณต๊ฐ์ ์ผ๋ก๋ ๋ญ๋น๊ฐ ์๋๊น?)
queue.PriorityQueue()
: ์ฐ์ ์์ ํ, ๊ณง ์์ฃผ ์ค์ํ๊ฒ ์ฌ์ฉ๋ ํ
enqueue
# ์ฐ์ ์์ ํ๋ฅผ ์ ์ธํ ๋ค๋ฅธ ํ๋ค์ ๊ฐ๋ง ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
queue.put(value)
# ์ฐ์ ์์ ํ์ ๊ฒฝ์ฐ ์ด๋ ๊ฒ ํํ๋ก ์ฐ์ ์์๊น์ง ์ค์ผํ๋ค.
PriorityQueue.put((priority, value))
#์์
q = queue.Queue()
q.put(1)
q = queue.PriorityQueue()
q.put((1, "Vip"))
dequeue
queue.get()
# ์์
q = queue.Queue()
q.put(1)
q.get()
queue size
queue.qsize()
# ์์
q = queue.Queue()
q.size()
ํ๊ฐ ๋ง์ด ์ฐ์ด๋ ๊ณณ
- ๋ฉํฐ ํ
์คํน์ ์ํ ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
๊ฐ ์ฝ์ด๊ฐ ์ด๋ค ์ผ์ด๋ ํด๊ฒฐํ๋๋ฐ ๊ฐ์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ๊ฐ์ ํ์ฌ ์์ฃผ ๊ฐ๋จํ๊ฒ ์ฝ๋๋ก ์์ฑํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค
์ค์ผ์ค๋งํ ๋ ๊ธํ ์์ ์ด ์ถ๊ฐ๋ ์๋ ์์ผ๋ฏ๋ก ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํ ์๋ ์๊ฒ ๋ค.
ํ๋ฅผ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ๊ตฌํํด๋ณด์
queue = []
def enqueue(data):
queue.append(data)
def dequeue():
return queue.pop(0) # 0๋ฒ์งธ ์๋ฆฌ์ ์์๋ฅผ ์ ๊ฑฐ
์ด๋ ๊ฒ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด์ ํ๋ฅผ ๊ตฌํํด๋ณด์๋ค.
๋ง์ฝ dequeueํ ๋ ์์๊ฐ ์์ผ๋ฉด index์๋ฌ๋ฅผ ๋ํ๋ด๊ฒ ๋๋๋ฐ,
์ด๋ if len(queue):
๋ฅผ ํตํด์ ๊ธธ์ด๊ฐ 0๋ณด๋ค ํด๋๋ง ์คํํ๋๋ก ํ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ์ง ์์ ์ด์ ๋ ์ด๋ฐ ํ์ธ์ด ํ์ํ์ง ์๋ ๊ฒฝ์ฐ ๋ถํ์ํ ์ฐ์ฐ์ ์ฆ๊ฐ์ํค๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ํ๋ค๋ฉด ์ถ๊ฐํ๋๊ฒ ์ด๋ ต์ง ์์์ ๋๋๋ค.
๊ฐ์ ํ๊ธฐ
๊ฐ์ฌ๋์ด c๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ ๋ณด์ฌ์ฃผ์
จ๋ฏ์ด, ๋ฐฐ์ด๋งํผ์ c์ฒ๋ผ ๊ธธ์ด๋ฅผ ์ง์ ํด์ผ ํ๋ ์ธ์ด๋ก ํ๋ฉด ๋ ์๋ฟ์ํ
๋ฐ ํ์ด์ฌ์ด๋ผ๋๊ฒ ์กฐ๊ธ ์์ฝ๋ค.
์๊ฐํ์๋ ๋ถ๋ค๊ป์ ๋ฑ c์ธ์ด ๋ฐฐ์ด ๊ธฐ์ด๊น์ง๋ง์ด๋ผ๋ ์๋ฉด ์ข๊ฒ ๋ค.
๊ทธ๋๋ c๋ฅผ ๊บผ๋ด์ฃผ์
์ ํ์ด์ฌ๋งํ ๋๋ณด๋ค๋ ์ข ์๋ฟ์ง ์์์๊น? ๋ผ๋ ์๊ฐ๋ ๋ค์๋ค.
์์ฃผ๋ฐ์ ๋ํด์
๋ฐฉ๊ธ ๋ง ๋ฌธ์๊ฐ ์๋๋ฐ, ์ด์ ๋ฏธ์
์ฑ๊ณตํ๋ค๊ณ ๋ฌธ์๊ฐ ์๋ค.
๋ด๊ฐ ์์๋ดค๋ ํจ์บ ์ ์ด๋ฐ ๊ณณ์ด ์๋๋ผ ์๋ฌด๋ฐ ์๋ด๋ ์๋์ ๋ฏธ์
์ ์ฑ๊ณตํ๋์ง ์คํจํ๋์ง ์ฌ๋ถ๋ ์๊ธฐ ํ๋ ๊ณณ์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ..?
๊ทธ ํ์ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ๋ณํ๊ฑด์ง ์๊ฐ๋ณด๋ค ๊ด์ฐฎ๋ค?
๋ด๊ฐ ์ ๊น ๋ค๋ ๋ ํ์ OO์ํ
์์ ์ ์ ๋ง ๊ด๊ณ ์ ํนํด์ ์ฐ๋ฝํ๋ฒํด๋ดค๋ค๊ฐ ๊ด์ฐฎ๊ฒ ๋ค ํด์ ๋ฑ๋กํ๋ ์ด๋ ์ํ์ด ์๋ค.
์ฌ๊ธฐ๊ฐ ์ ๋ง ๊ด์ฐฎ์๊ฐ ํ๊ณ 1์๊ฐ๊ฑฐ๋ฆฌ๋ฅผ ์ ๊น ๋ค๋
๋ดค์๋๋ฐ..
์ ๋ง์ ๋ง ๊ฐ์ฌ๊ฐ ๋ณ๋ก์ฌ์ ๊ฑฐ์ ์๋ค๋
๋ค.
์๋ฒ ๋ญ์๊ธฐ๋ ๊ฐ์ฌ๋์ ๊ฝค ๊ด์ฐฎ์๋๋ฐ ์ด๋ฏธ ๋ค๋ฅธ๊ฐ์ข๋ก ํ์ ์ด๋ฏธ์ง๋ฅผ ๋ฒ๋ ค๋์ใ
ใ
๊ผด๋๋ณด๊ธฐ์ซ์ด์ ์๋ค์๋ค.(๋์ถฉ ๋๋ฒ๋ ธ๋ค๋ ๋ป)
(์ฌ๊ธฐ์ ์ ์ ๊ณ ๋์ค์ ์ต์ข
์๊ฐํ๊ธฐ๊ฐ์๊ฑธ๋ก ์ ์ผ๋ ค๊ณ ํ๋๋ฐ ๋์ค๋๋ฉด ๊น๋จน์๊น๋ด์ ์ฌ๊ธฐ ๋จ๊น, ์ด๋ฐ๊ฑฐ ์ ์ด๋ ์๊ด์๊ฒ ์ง? ๋ด ๋ธ๋ก๊ทธ์ธ๋ฐ ๋ญ๋ผํ ๊น์ค..?)
๋ง์ง๋ง
๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋๋ ๊ธ์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ