๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

Do it ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•˜๋ฃจ์ฝ”๋”ฉ 3์žฅ ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋ก 

by ๋น„์†Œ์•ผ 2022. 11. 16.
728x90

Do it ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•˜๋ฃจ์ฝ”๋”ฉ 3์žฅ ์ž๋ฃŒ๊ตฌ์กฐ ์š”์•ฝ

# 5 ๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ java

๋ฐฐ์—ด

๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

ํŠน์ง•

1. ์ธ๋ฑ์‹ฑO, ์ ‘๊ทผ์†๋„ ↑

2. ๊ฐ’ ์‚ฝ์ž…, ์‚ญ์ œ ๋ฒˆ๊ฑฐ๋กœ์›€, ์†๋„ ↓, ์ฃผ๋ณ€ ๊ฐ’ ์ด๋™์‹œํ‚ค๋Š” ๊ณผ์ • ํ•„์š”

3. ํฌ๊ธฐ ์„ ์–ธํ•  ๋•Œ ์ง€์ •O, ํฌ๊ธฐ ๊ณ ์ •

4. ๊ตฌ์กฐ ๊ฐ„๋‹จ

 

๋ฆฌ์ŠคํŠธ

๊ฐ’๊ณผ ํฌ์ธํ„ฐ๋ฅผ ๋ฌถ์€ ๋…ธ๋“œ๋ผ๋Š” ๊ฒƒ์„ ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

ํŠน์ง•

1. ์ธ๋ฑ์‹ฑX, ์ ‘๊ทผ์†๋„ ↓, Head ํฌ์ธํ„ฐ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผํ•˜์—ฌ ์†๋„ ๋Š๋ฆผ

2. ๊ฐ’ ์‚ฝ์ž…, ์‚ญ์ œ ํŽธ๋ฆฌ, ์†๋„ ↑, ์ฃผ๋ณ€ ๊ฐ’ ์ด๋™์‹œํ‚ค๋Š” ๊ณผ์ • ํ•„์š”X

3. ํฌ๊ธฐ ์„ ์–ธํ• ๋•Œ ์ง€์ •X, ํฌ๊ธฐ ๊ฐ€๋ณ€

4. ๊ตฌ์กฐ ๋ณต์žก

 

java์—์„œ๋Š”

ArrayList

LinkedList

 

์ƒํ™ฉ๋ณ„ ์œ ๋ฆฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

๋ฐฐ์—ด: ํฌ๊ธฐ๊ณ ์ •, ๊ฐ’ ์ ‘๊ทผ

๋ฆฌ์ŠคํŠธ: ํฌ๊ธฐ๊ฐ€๋ณ€, ์‚ฝ์ž…, ์‚ญ์ œ ๋นˆ๋ฒˆ

 

#6 ๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ python

ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ ๊ตฌ๋ถ„์—†์ด ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ

๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐฐ์—ด์˜ ํŠน์ง•๋„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ

 

ํŒŒ์ด์ฌ์—์„œ ๋ฆฌ์ŠคํŠธ

ํŠน์ง•

1. ์ธ๋ฑ์‹ฑ O

2. ํฌ๊ธฐ๊ฐ€๋ณ€

 

# 7 ๊ตฌ๊ฐ„ํ•ฉ

๊ตฌ๊ฐ„ํ•ฉ

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ตฌ๊ฐ„์˜ ์š”์†Œ ํ•ฉ์ธ ๊ตฌ๊ฐ„ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

ํ•ฉ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„ ๋ณต์žก๋„ ↓

 

ํ•ฉ๋ฐฐ์—ด์˜ ์ •์˜

S[i] = A[0] + A[1] + ... + A[i] // ์›๋ณธ ๋ฐฐ์—ด A์˜ ์ธ๋ฑ์Šค 0~ i๋ฒˆ์งธ ์š”์†Œ์˜ ํ•ฉ

ex) S[4] == A[0] + A[1] + A[2] + A[3] + A[4]

 

ํ•ฉ๋ฐฐ์—ด ๋งŒ๋“œ๋Š” ๊ณต์‹

S[0] = A[0]

S[i] = S[i-1] + A[i] # i๊ฐ€ 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ

 

ํ•ฉ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๊ตฌ๊ฐ„ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ณต์‹

S[j] - S[i-1] # ์›๋ณธ ๋ฐฐ์—ด A์˜ ์ธ๋ฑ์Šค i~j๊นŒ์ง€ ์š”์†Œ์˜ ๊ตฌ๊ฐ„ํ•ฉ 

 

์›๋ณธ ๋ฐฐ์—ด์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ•ฉ๋ฐฐ์—ด ์ด์šฉํ•˜์—ฌ ๊ตฌ๊ฐ„ํ•ฉ

์›๋ณธ ๋ฐฐ์—ด์ด ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ segment tree(index tree) ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ๊ฐ„ํ•ฉ

 

# 8 ์Šคํƒ๊ณผ ํ java

๋ฐฐ์—ด์—์„œ ๋ฐœ์ „๋œ ์ž๋ฃŒ๊ตฌ์กฐ

 

์Šคํƒ

ํ›„์ž…์„ ์ถœ LIFO, ํ•œ ์ชฝ์—์„œ๋งŒ

push() // ์‚ฝ์ž…

pop() // ์‚ญ์ œ, ํ™•์ธ

peek() // ํ™•์ธ๋งŒ

top // ์œ„

 

DFS, ๋ฐฑํŠธ๋ž˜ํ‚น // ์žฌ๊ท€ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์›๋ฆฌ์™€ ์œ ์‚ฌ

 

ํ

์„ ์ž…์„ ์ถœ FIFO, ์–‘ ์ชฝ์—์„œ

add() // ์‚ฝ์ž…

poll() // ์‚ญ์ œ, ํ™•์ธ

peek() // ํ™•์ธ๋งŒ

front // ์•ž

rear // ๋’ค

 

BFS

 

์šฐ์„ ์ˆœ์œ„ ํ

๋“ค์–ด๊ฐ„ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

front์— ํ•ญ์ƒ ์ตœ์†Ÿ๊ฐ’ ๋˜๋Š” ์ตœ๋Œ“๊ฐ’ ์œ„์น˜ // ๊ทธ ์ดํ•˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋Š” ๋œป์€ ์•„๋‹ˆ๋‹ค.

ํž™์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„

 

# 9 ์Šคํƒ๊ณผ ํ python

๋ฆฌ์ŠคํŠธ์—์„œ ๋ฐœ์ „๋œ ์ž๋ฃŒ๊ตฌ์กฐ

 

์Šคํƒ

s.append() # ์‚ฝ์ž…

s.pop() # ์‚ญ์ œ, ํ™•์ธ

s[-1] # ํ™•์ธ๋งŒ

top # ์œ„

 

ํ

ํŒŒ์ด์ฌ์—์„œ list, deque๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ # ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ deque๊ฐ€ ์œ ๋ฆฌ

s.append() # ์‚ฝ์ž…

s.popleft() # ์‚ญ์ œ, ํ™•์ธ

s[0] # ํ™•์ธ๋งŒ

front # ์•ž

rear # ๋’ค

 

ํˆฌํฌ์ธํ„ฐ

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ

 

728x90