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 # ๋ค
ํฌํฌ์ธํฐ
์ฌ๋ผ์ด๋ฉ ์๋์ฐ