*๋ชจ๋ ์ถ์ฒ๋ ๋์ "๋ฐ์ดํฐ ๊ณผํ์ ์ํ ํ์ด์ฌ ํ๋ก๊ทธ๋๋ฐ"์ ๋๋ค*
#1. ์๋ฃ๊ตฌ์กฐ์ ์ดํด
์๋ฃ๊ตฌ์กฐ์ ๊ฐ๋
ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ์ฒ๋ฆฌํ ๋๊ฐ ์์
- ์ ํ๋ฒํธ๋ถ → ํจ์จ์ ์ผ๋ก ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ ์ํด ์ด๋ฆ์ ๊ฐ๋๋ค์์ผ๋ก ์ ๋ ฌํ์ฌ ์ ์ฅ
์ด์ฒ๋ผ ๋ฐ์ดํฐ์ ํน์ง์ ๊ณ ๋ คํ์ฌ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์๋ฃ๊ตฌ์กฐ(data structure)๋ผ๊ณ ํจ!
- ๋ ๋ค๋ฅธ ์์
- ํ๋ฐฐ ์ํ๋ฌผ์ ํธ๋ญ์ ์ค์ ๋, ๋์ค์ ๋ฐฐ๋ฌํ ๊ฒ์ ์์ชฝ์ ๋จผ์ ๋ฐฐ๋ฌํ ๊ฒ์ ํธ๋ญ ์ ๊ตฌ์ชฝ์ ์๋ ๊ฒ
<aside> ๐ ํน์ง์ด ์๋ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ผ๋ก ์ ์ฅ ๋ฐ ๋ฐํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์
</aside>
ํนํ ๋์ฉ๋์ผ์๋ก ํจ์จ์ฑ์ด ๋์ฑ ๊ฐ์กฐ๋์ด ์๋ง์ ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์!
ํ์ด์ฌ์์์ ์๋ฃ๊ตฌ์กฐ
- ์๋ฃ๊ตฌ์กฐ์ ๊ธฐ๋ณธ์ ์ฅ ๋ฐฉ์ ⇒ ๋ฆฌ์คํธ
- ํ์ด์ฌ์์ ์ ๊ณตํ๋ ์๋ฃ๊ตฌ์กฐ
#2. ์คํ๊ณผ ํ
์คํ(stack)
- ๊ฐ์ฅ ์ฒ์ ๋ฐฐ์ฐ๋ ์๋ฃ๊ตฌ์กฐ, ํต์ฌ ๊ฐ๋ ์ค ํ๋
- “Last In First Out”
- ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์ค๋ ํํ๋ก ๋ฐ์ดํฐ์ ์ ์ฅ ๊ณต๊ฐ์ ๊ตฌํ
- ์ผ๋ฐ์ ์ผ๋ก ์คํ = ์ฌ๊ฐํ์ ์ ์ฅ๊ณต๊ฐ
- ๋ฆฌ์คํธ์ ๋น์ทํ์ง๋ง, ์์๊ฐ ๋ฐ๋๋ ํํ
- ๊ธฐ๋ณธ ๋ฌธ๋ฒ
- ํธ์(push) : ์คํ์ ๋ฐ์ดํฐ ์ ์ฅํ๋ ๊ฒ
- ํ(pop) : ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ฒ
- ์ธ์ ์ฌ์ฉ๋ ๊น?
- ํ๋ฐฐ ์ํ๋ฌผ์ ์ ์ฅํ๋ ๋ฐฉ์
- ์ํ๋ฌผ์ด ํ๋์ ๋ฐ์ดํฐ๋ผ๋ฉด, ๋จผ์ ๋ค์ด๊ฐ ๊ฒ์ด ๋์ค์ ๋์ค์ ๋ค์ด๊ฐ ๊ฒ์ด ๊ฐ์ฅ ๋จผ์ ๋์จ๋ค
- ํ๋ฐฐ ์ํ๋ฌผ์ ์ ์ฅํ๋ ๋ฐฉ์
- ์คํ ๊ตฌํ ๋ฐฉ๋ฒ
- ๋ฆฌ์คํธ ์ฌ์ฉ
- ๋ฆฌ์คํธ๋ก ์ ์ฅ ๊ณต๊ฐ ์์ฑ → **append()**๋ก ๋ฐ์ดํฐ ์ ์ฅ(push), **pop()**์ผ๋ก ๋ฐ์ดํฐ ์ถ์ถ(pop)
- ์ฝ๋
→ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐํ ๊ฐ๋ถํฐ ์ถ์ถ๋๋ ๊ฒ์ ์ ์ ์๋คa = [1, 2, 3, 4, 5] a.append(10) a #[1, 2, 3, 4, 5, 10] a.append(20) a #[1, 2, 3, 4, 5, 10, 20] a.pop() #20 a.pop() #10
- ๋ฆฌ์คํธ ์ฌ์ฉ
- ์คํ์ผ๋ก ๋ง๋ค ์ ์๋ ํ๋ก๊ทธ๋จ
- ์ด์ง์ ๋ณํ๊ธฐ
- ์ญ์ง์๋ฅผ ์ด์ง์๋ก ๋ณํ
- ์์ธ ์ค๋ช
- 2๋ก ๋๋ ๋๋จธ์ง ๊ฐ์ ์คํ์ ํธ์ → ๋ง์ง๋ง์ผ๋ก ๋ค์ด์จ ๊ฐ๋ถํฐ ํ์ผ๋ก ์ถ์ถํ๊ณ ์ถ๋ ฅ
- ํ
์คํธ ์ญ์์ผ๋ก ์ถ์ถํ๊ธฐ
- ์ฝ๋
word = input("Input a word: ") world_list =list(word) print(world_list) result=[] for _ in range(len1(world_list)): result.append(world_list.pop()) print(result) print(word[::-1])
- ์คํํ๋ฉด
- ์ด์ง์ ๋ณํ๊ธฐ
→ ‘_’ ๊ธฐํธ : ์ผ๋ฐ์ ์ผ๋ก for๋ฌธ์์ ์์ฃผ ์ฌ์ฉ / ํด๋น ๋ฐ๋ณต๋ฌธ์์ ์์ฑ๋๋ ๊ฐ์ ์ฝ๋์์ ์ฌ์ฉํ์ง ์๋๋ค๋ ๋ป
ํ
- ์คํ์ ๋ฐ๋ ๊ฐ๋
- “First In First Out”
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ด
- ์ธ์ ์ฌ์ฉ๋ ๊น?
- ์ํ์์ ๋๊ธฐ ๋ฒํธํ ๋ฝ์ ๋
- ๋จผ์ ์จ ์ฌ๋์ด ์์ ๋ฒํธํ ๋ฝ๊ณ ๋จผ์ ์๋น์ค ๋ฐ๋ ๊ตฌ์กฐ
- ์ํ์์ ๋๊ธฐ ๋ฒํธํ ๋ฝ์ ๋
- ๋ฉ๋ชจ๋ฆฌ ๊ด์
- ์คํ → ๋ฉ๋ชจ๋ฆฌ ์์ํ๋ ์ง์ ๊ณ ์ ๋ผ์์
- but, ํ → ์ฒ์์ ๊ฐ์ด ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ฐ์ด ์ฌ์ฉ๋จ์ ๋ฐ๋ผ ๊ณ์ ๋ฐ๋
- ํ ๊ตฌํ ๋ฐฉ๋ฒ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ์ ๊ตฌํ ๋ฐฉ๋ฒ๊ณผ ๋์ผ
- pop() ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ธ๋ฑ์ค๊ฐ 0๋ฒ์งธ์ธ ๊ฐ์ ์ด๋ค๋ ์๋ฏธ
- pop(0)์ ์ฌ์ฉ
- ⇒ pop() ํจ์๊ฐ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๊ฐ์ ๊ฐ์ ธ์จ๋ค๊ณ ํ์ ๋ pop(0)์ ๋งจ ์ฒ์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค๋ ๋ป
#3. ํํ๊ณผ ์ธํธ
ํํ
๋ฆฌ์คํธ์ ๊ฐ์ ๊ฐ๋ ์ด์ง๋ง ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๋ฆฌ์คํธ
- ์ ์ธ๊ณผ ์ฌ์ฉ์ด ๋ฆฌ์คํธ์ ์ฝ๊ฐ ๋ค๋ฆ
- ์ฝ๋
- #1
- ํํ์ ์ ์ธํ๋ ๋ช ๋ น
- ๊ดํธ๋ฅผ ์ด์ฉํ์ฌ *t = (1, 2, 3)*๊ณผ ๊ฐ์ ํํ๋ก ์ ์ธ
- ๋๊ดํธ[ ]๋ฅผ ์ด์ฉํ๋ ๋ฆฌ์คํธ์ ์ฐจ์ด์
- ํ์ง๋ง ์ ์ธ ์ธ์ ์ฌ๋ฌ ๊ฐ์ง ์ฐ์ฐ์ ๋ฆฌ์คํธ์ ๊ฐ์ ๋ฐฉ์
- ์์ ์ฝ๋์ฒ๋ผ ํํ ๊ฐ์ ๋ง์ , ๊ณฑ์ , len() ํจ์์ ๊ฐ์ด→ ๋ฆฌ์คํธํ ๋ฐ์ดํฐ์ ์ฌ์ฉํ๋ ๋ชจ๋ ํจ์ ์ฌ์ฉ๊ฐ๋ฅ
- ํฐ ์ฐจ์ด์ ์ด ์๋ค๋ฉด, ํํ์ ๊ฐ์ ๋ง์๋๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ!
- ๋ง์ฝ ํํ์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค๋ฅ๊ฐ ๋ฐ์
- ์ค๋ฅ ๋ฉ์์ง
- ‘ํํ ์ค๋ธ์ ํธ(‘tuple’ object)์๋ ์๋ก์ด ์์ดํ (item)์ ํ ๋น์ ํ์ฉํ์ง ์๋๋ค.’
- ํํ์ ๊ฐ์ฅ ํฐ ํน์ง
- ๋ง์ฝ ๊ฐ์ด ํ๋๋ฐ์ ์๋ค๋ฉด ํํ์ ์ด๋ป๊ฒ ์ ์ธํ ์ ์์๊น?
- t = (1, )์ ๊ฐ์ด ๋ฐ๋์ ์ฝค๋ง(,)๋ฅผ ๋ถ์ฌ t๊ฐ ํํ์์ ์ ์ธ
- ์ด๋ ๊ฒ ๊ฐ์ ๋ฐ๊ฟ ์๋ ์๋ ํํ์ ์ธ์ ์ฌ์ฉํ ๊น?
- ์ฌ์ค ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด ์ฌ๋ฌ ์ฌ๋ ๊ณผ ํจ๊ป ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
- ์์ ์ด ํ๋์ ํจ์๋ง ๋ง๋ค๊ณ , ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์
- ์ด๋ ๋ฐํํด์ฃผ๋ ํ์ ์ ํํ๋ก ์ ์ธ→ ์ดํ ์ฌ์ฉํ๋ ์ฌ๋์ด ๋ง์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ์ง ๋ชปํ๊ฒ ๋จ
- ๊ทธ๋ ๋ค๋ฉด ๋ฐ๋๋ฉด ์ ๋๋ ๋ฐ์ดํฐ์๋ ์ด๋ค ๊ฒ์ด ์์๊น?
- ํ๋ฒ์ด๋ ์ด๋ฆ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์ ๋๋ ์ ๋ณด
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์ด๋ฌํ ์ดํด ์์ด ๋ง์๋๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ ํํ์ ์ด๋ฅผ ๋ฐฉ์งํด์ฃผ๋ ์ญํ
์ธํธ
์์ ์์ด ์ ์ฅํ๋ ์ค๋ณต์ ๋ถํํ๋ ์๋ฃํ, ์ํ์ ์งํฉ๊ณผ ์์ฃผ ๋น์ท
- ์ค๋ณต์ ๋ถํํ๋ ํน์ง ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ์์ ๋งค์ฐ ์ ์ฉ
- ์์) ๋ฌธ์ ํ๋์ ๋ค์ด๊ฐ ์๋ ๋จ์ด ์ข
๋ฅ์ ๊ฐ์๋ฅผ ์
๋
- ๋ชจ๋ ๋จ์ด๋ฅผ ์ถ์ถํ ํ ์ธํธ๋ก ๋ณํ → ๋จ์ด ์ข ๋ฅ์ ๊ฐ์๋ฅผ ์ฝ๊ฒ ํ์ ๊ฐ๋ฅ
- ํ์ด์ฌ์์๋ ์ธํธ ์ ์ธ์ ํ๋ ๊ฒ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ
- ์ธํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด set() ํจ์๋ฅผ ์ฌ์ฉ → ๋ฆฌ์คํธ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ์ด ์ธํธ ํํ๋ก ๋ณํ๋จ
- ์ ์ฝ๋์ฒ๋ผ [1, 2, 3, 1, 2, 3]์ด๋ผ๋ ๋ฆฌ์คํธํ์ ๊ฐ์ ์ธํธ๋ก ๋ณํ → ์ค๋ณต์ ์ ๊ฑฐํ ํ {1, 2, 3}์ผ๋ก ๋ณํ๋์ด ์ถ๋ ฅ
- ํํ๊ณผ ๋ค๋ฅด๊ฒ ์ญ์ ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ, ์ด ๊ธฐ๋ฅ์ ์ด์ฉ → ๋ค์๊ณผ ๊ฐ์ด ๋ค์ํ ํจ์๋ฅผ ์ง์
- ์ง์ํ๋ ํจ์
- add() → ์์ ํ๋๋ฅผ ์ถ๊ฐ
- remove() & discard() → ์์ ํ๋ ์ ๊ฑฐ
- update() → ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ๊ทธ๋๋ก ์ถ๊ฐ
- clear() → ๋ชจ๋ ๋ณ์๋ฅผ ์ง์
- ๊ฐ์ ๋ชจ๋ ์์ ์์ด ์ ์ฅ & ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ ์ฅ
- ํ์ด์ฌ์ ์ธํธ๋ ์ํ์ ์งํฉ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ํ ์งํฉ ์ฐ์ฐ์ ์ ๊ณต
- ์งํฉ ์ฐ์ฐ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๊ต์งํฉ, ํฉ์งํฉ, ์ฐจ์งํฉ์ด ์์
- ํ์ด์ฌ์์๋ ์ด ์ธ ๊ฐ์ง ์งํฉ ์ฐ์ฐ์ ๋ชจ๋ ์ง์
- ํฉ์งํฉ
- ๋ ์งํฉ์ ์ค๋ณต๊ฐ์ ์ ๊ฑฐํ๊ณ ํฉ์น๋ ์ฐ์ฐ
- **union()**๊ณผ ๊ฐ์ ํจ์๋ก๋ ํํํ ์ ์์ง๋ง, | ๊ธฐํธ๋ก๋ ์ถ์ถํ ์ ์์
- ์ ์ฝ๋์์ s1 | s2์ ๊ฒฐ๊ณผ๊ฐ s1.union(s2)์ ๋์ผ
- ๊ต์งํฉ
- ๋ ์งํฉ ์์ชฝ์ ๋ชจ๋ ํฌํจ๋ ๊ฐ๋ง ์ถ์ถํ๋ ์ฐ์ฐ
- ๊ต์งํฉ์ ๊ฐ๋ ์ if๋ฌธ์์ ๋ฐฐ์ ๋ and ์กฐ๊ฑด์ ๊ฐ๋ ๊ณผ ๋น์ท
- ์ฐจ์งํฉ
- ์์ ์๋ ์งํฉ s1์ ์์ ์ค s2์ ํฌํจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ ์ฐ์ฐ
- ์ฆ, s1์์ s1 ๊ณผ s2์ ๊ต์งํฉ ์์๋ฅผ ์ญ์ ํ๋ฉด ๋จ
- ์ด ์ฝ๋์์ s1์ [1, 2, 3, 4, 5]๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก [3, 4, 5]๋ฅผ ์ ๊ฑฐํ๋ฉด [1, 2]๋ง ๋จ์
#4. ๋์ ๋๋ฆฌ
๋์ ๋๋ฆฌ์ ๊ฐ๋
์์ด์ฌ์ ์์ ๊ฒ์์ ์ํด ์์ด ๋จ์ด๋ค์ ์ ์ฅํด ๋์ ๋ฐฉ์๊ณผ ๋น์ท
- ์์ด์ฌ์ ์์๋ ๊ฐ ๋จ์ด๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ์์ธ index์ ๋ง๋ค์ด ๋๊ณ ์์ธ์ ํตํด ๊ทธ ๋จ์ด๋ฅผ ์ฐพ์ ์๋ฏธ๋ฅผ ํ์
- ์์ธ
- ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ฝ๋๋ก ๊ตฌ๋ถํด ๋์ ์ ์ผํ ์ ๋ณด, ๋จ์ด๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ์
- ์์ธ
- in ํ์ด์ฌ์ ๋์
๋๋ฆฌ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ์ ์ ์ผํ ๊ตฌ๋ถ์์ธ ํค key๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฒ์
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐvalue ์ด๋ผ๋ ์ด๋ฆ๊ณผ ์์ผ๋ก ์ ์ฅ → ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ํจ
- ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ์ → ์ค์ํ์์๋ ๋งค์ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ
- ์๋ฅผ ๋ค์ด, ๊ฐ์ธ์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๋ ํ๊ต์ ํ๋ฒ. ์ ํ ๋ฒํธ ๋ฑ์ ๋ชจ๋ ํ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๋ ํค๋ก ์ ๊ฐํ ์ ์์
- [ํ 7-3]์ ๋ํ์ ์ธ์ ์ฌํญ์์ ํ๋ฒ์ด ๋๋จธ์ง ์ ๋ณด๋ฅผ ๊ตฌ๋ถํ๋ ํค
- ํ๋ฒ์ ํค๋ก ํ์ฌ ์ด๋ฆ • ์๋ ์์ผ ' ์ฃผ์๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ์ ์ฅํ ๋ค์ ํ ๋ฒ์ ๊ฒ์ํ ์ ์๋ ํํ๊ฐ ๋๋ฉด ํ๋ฒ์ ์ด์ฉํด ๋ค๋ฅธ ์ ๋ณด์ ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅ
ํ์ด์ฌ์์์ ๋์ ๋๋ฆฌ
- ๋์
๋๋ฆฌ์ ์ ์ธ
- ์ค๊ดํธ {}๋ฅผ ์ฌ์ฉํ์ฌ ํค์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑํ๋ฉด ๋จ
- ์ค์
- ๊ฐ์๋ ๋ค์ํ ์๋ฃํ์ด ๋ค์ด๊ฐ ์ ์๋ค๋ ๊ฒ
- ์ด๋ฆ → ๋ฌธ์์ด์ด๋ฏ๋ก ์ผ๋ฐ์ ์ธ ๋ฌธ์์ด๋ก ์ ์ฅ
- but, ๋ฆฌ์คํธ์ ๊ฐ์ด ํ ๋ฒ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๋ค๊ฑฐ๋, ํํ ๋๋ ์ธํธ์ ๊ฐ์ ๋ฐ์ดํฐ๋ ์ฌ์ฉํ ์ ์์
- ์ฌ์ง์ด ๋์ ๋๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅ
- [ํ 7-4]์ ์ ๋ณด๋ฅผ ๊ฐ๋จํ ํ์ด์ฌ์ผ๋ก ํํ
- student_info ๋ผ๋ ๋ณ์๋ฅผ ๋จผ์ ์ ์ธ → ํด๋น ๋ณ์์ {ํค:๊ฐ} ํํ๋ก ๊ฐ์ ์ ๋ ฅ
- ํด๋น ๋ณ์๋ ๊ฐ๋จํ ์ ์ฅ๋จ
- ํด๋น ๋ณ์์์ ํน์ ๊ฐ ํธ์ถ→ ํด๋น ๊ฐ์ ํค๋ฅผ ๋๊ดํธ [ ] ์์ ๋ฃ์ด ํธ์ถํ๋ฉด ๋จ
- ํค๋ ๋ฌธ์์ด๋ก ์ ์ธํ ์๋ ์๊ณ , ์ ์ํ์ผ๋ก ์ ์ธํ ์๋ ์์
- ์ฌ๊ธฐ์๋ ์ ์ํ์ผ๋ก ์ ์ธํ์ผ๋ฏ๋ก ์ ์ํ์ผ๋ก ํธ์ถ
- ์ฌํ ๋น & ๋ฐ์ดํฐ ์ถ๊ฐ
- → ๋์
๋๋ฆฌ์์์ ์ฌํ ๋น๋ ๋ฆฌ์คํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ๋ค๋ฅด์ง ์์
- ํค๋ฅผ ์ด์ฉ → ํด๋น ๋ณ์๋ฅผ ํธ์ถํ ํ ์๋ก์ด ๊ฐ์ ํ ๋น
- ๋ฐ์ดํฐ ์ถ๊ฐ → ์๋ก์ด ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ ๋น
- ํ ๋น ์ ์ฌ์ฉ๋๋ ํค๊ฐ ๊ธฐ์กด์ ์๋ ํค๋ผ๋ฉด ํด๋น ๊ฐ์ด ๋ณ๊ฒฝ๋๊ณ , ๊ธฐ์กด์ ์๋ ํค๋ผ๋ฉด ์๋ก์ด ๊ฐ์ผ๋ก ์ถ๊ฐ๋จ
๋์ ๋๋ฆฌ ํจ์
ํ์ด์ฌ → ๋์ ๋๋ฆฌ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ค์ํ ํจ์๋ฅผ ์ ๊ณต
- ํนํ for๋ฌธ์ด๋ if ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ค์ํ ์ฝ๋๋ฅผ ์์ฑ๊ฐ๋ฅ
- ์) ๊ตญ๊ฐ๋ช ๊ณผ ๊ตญ๊ฐ ์ ํ๋ฒํธ๋ฅผ ๋ฌถ์ด ๋ณด์ฌ์ฃผ๋ ์ฝ๋
- keys() ; ๋์
๋๋ฆฌ ๋ณ์ ์์ ํค์ ๊ฐ์ ์ถ๋ ฅํ๋ ํจ์
- ๋จผ์ ํค๋ง ์ถ๋ ฅํ๊ธฐ ์ํด์๋ keys() ํจ์๋ฅผ ์ฌ์ฉ
- ์ด ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํค๊ฐ ๋ฆฌ์คํธ ํํ๋ก ์ถ๋ ฅ๋จ
#5. collections ๋ชจ๋
deque ๋ชจ๋
ํ์ด์ฌ์ ๋ด์ฅ ์๋ฃ๊ตฌ์กฐ
- built-in data structure ๋ชจ๋์ธ Collections
- collections ๋ชจ๋ → ์ด๋ฏธ ์์์ ๋ฐฐ์ด ๋ค์ํ ์๋ฃ๊ตฌ์กฐ์ธ ๋ฆฌ์คํธ, ํํ, ๋์ ๋๋ฆฌ ๋ฑ์ ํ์ฅํ์ฌ ์ ์๋ ํ์ด์ฌ์ ๋ด์ฅ ๋ชจ๋
- ๊ธฐ์กด์ ๋ฐฐ์ ๋ ์๋ฃ๊ตฌ์กฐ๋ณด๋ค ํจ์จ์ ์ด๊ณ ํธ๋ฆฌ
deque?
์คํ๊ณผ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํผํฉํ ์๋ฃ๊ตฌ์กฐ๋ก์, ์์ชฝ ๋์์ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ํ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค
- collections ๋ชจ๋์ ์ ๊ณต
- deque, OrderedDict, defaultdict, Counter, namedtuple ๋ฑ์ ์ ๊ณต
- ๊ฐ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํธ์ถํ๋ ์ฝ๋
- deque์์ ํ๋ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์์๊น?
- pop(0)์ ์ ๋ ฅํ๋ฉด ์คํ๋ ๊ฒ ๊ฐ์ง๋ง, deque์์๋ ์๋ํ์ง X
- ๋์ appendleft() ํจ์๋ก ์๋ก์ด ๊ฐ์ ์ผ์ชฝ๋ถํฐ ์ ๋ ฅ → ๋จผ์ ๋ค์ด๊ฐ ๊ฐ๋ถํฐ ์ถ๋ ฅ๋ ์ ์๋๋ก ํจ
deque ๋ชจ๋ ์ฅ์
- ๊ธฐ์กด ๋ฆฌ์คํธ์ ๋น๊ตํ ๋ ๋ช ๊ฐ์ง ์ฅ์ ์ด ์์
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ linked list์ ํน์ฑ์ ์ง์
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์์์ ๊ฐ์ ํ ์ชฝ์ผ๋ก ์ฐ๊ฒฐํ ํ, ์์์ ๋ค์ ๊ฐ์ ์ฃผ์๊ฐ์ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฒ
- [๊ทธ๋ฆผ 7-5]์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋จ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- [๊ทธ๋ฆผ 7-6]์ฒ๋ผ ๋ค์ ์์์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ์ํ์ผ๋ก ์ ์ฅ๊ฐ๋ฅ
- ๋ํ, ๋ง์ง๋ง ์์์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ์ฃผ์๋ฅผ ์ ์ฅ์์ผ ํด๋น ๊ฐ์ ์ฐพ์๊ฐ ์ ์๋๋ก ์ฐ๊ฒฐ
- ์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ธฐ๋ฅ → rotate() ํจ์
- rotate()→๊ธฐ์กด deque์ ์ ์ฅ๋ ์์๋ค ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๊พธ๋ ๊ธฐ๋ฒ
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์์ชฝ ๋์ ์์๋ค์ ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก [๊ทธ๋ฆผ 7-6]์ฒ๋ผ ์ํ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง
- ์ด๋ฌํ ํน์ง์ ์ด์ฉ → ๊ฐ ์์์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ํ๋์ฉ ์ฎ๊ธด๋ค๋ฉด ์ค์ ๋ก ์์๋ฅผ ์ฎ๊ธฐ์ง ์๋๋ผ๋ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ฐ๊ฟ ์ ์์
- ์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ธฐ๋ฅ → rotate() ํจ์
rderedDict ๋ชจ๋
์ด๋ฆ ๊ทธ๋๋ก ์์๋ฅผ ๊ฐ์ง ๋์ ๋๋ฆฌ ๊ฐ์ฒด
- ์์์ ๋์ ๋๋ฆฌ๋ ์์ ๋ฅผ ๋ณด์ฅํ์ง ์๋ ๊ฐ์ฒด๋ผ๋ ๊ฒ์ ์ธ๊ธ
- ⇒ ์ฆ ๋์ ๋๋ฆฌ ํ์ผ์ ์ ์ฅํ๋ฉด ํค๋ ์ ์ฅ ์์์ ์๊ด์์ด ์ ์ฅ๋จ. [์ฝ๋ 7-2]๋ฅผ ์คํ
์ด๋ค ์ปดํจํฐ๋ ์๊ด์์ด x, y, z, 1์ ์์๋๋ก ํค-๊ฐ์์ด ์ถ๋ ฅ๋จ
- ๊ทธ๋ ๋ค๋ฉด OrderedDict ๋ชจ๋์ ์ธ์ ์ฌ์ฉํ ์ ์์๊น?
- ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋์ ๋ ๋ฆฌ ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํค๋ ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋
- ์๋ฅผ ๋ค์ด ํค๋ฅผ ์ด์ฉํ์ฌ ์ฃผ๋ฏผ๋ฑ๋ก ๋ฒํธ๋ฅผ ๋ฒํธ ์์๋๋ก ์ ๋ ฌํ ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ
- [์ฝ๋ 7-4]๋ฅผ ์ดํด๋ณด์.
defaultdict ๋ชจ๋
๋์ ๋๋ฆฌ์ ๋ณ์๋ฅผ ์์ฑํ ๋ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ
- ์๋ก์ด ํค๋ฅผ ์์ฑํ ๋ ๋ณ๋ค๋ฅธ ์กฐ์น ์์ด ์๋ก์ด ๊ฐ์ ์์ฑ๊ฐ๋ฅ
- ์ค์ ๋์ ๋๋ฆฌ์์๋ [์ฝ๋ 7-5]์ฒ๋ผ ํค๋ฅผ ์์ฑํ์ง ์๊ณ ํด๋น ํค์ ๊ฐ์ ํธ์ถํ๋ ค๊ณ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์
- ⇒ ์ฆ, ์ฝ๋์ ์ first์ ํค๊ฐ์ ๋ณ๋๋ก ์์ฑํ์ง ์์ ์ฑ ๋ฐ๋ก ํธ์ถํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ
Counter ๋ชจ๋
์ํ์ค ์๋ฃํ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์๋ฅผ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐํํ๋ ๋ฐฉ๋ฒ
- ์ฆ, ๋ฆฌ์คํธ๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ ์ํ์ค ์๋ฃํ์ ์ ์ฅ๋ ์์ ์ค์์ ๊ฐ์ ๊ฐ์ด ๋ช ๊ฐ ์๋์ง ๊ทธ ๊ฐ์๋ฅผ ๋ฐํ
namedtuple ๋ชจ๋
ํํ์ ํํ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
- ์ด๋ค ํน์ ๋ฐ์ดํฐ๋ ์ ๋ง๋ค ๊ท์ ๋ ์ ๋ณด๊ฐ ์์
- ์๋ฅผ ๋ค์ด. ํ์์ด๋ผ๋ ์ ๋ณด๋ฅผ ์ปดํจํฐ์ ์ ์ฅํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ณ์(ํ๋ฒ, ์ด๋ฆ, ํ๋ , ํ๊ณผ ๋ฑ)๊ฐ ์๋ค. ์ด๋ฌํ ์ ๋ณด๋ฅผ ํ๋์ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด ์ด์ฐจ์ ๋ฆฌ์คํธ ํํ๋ก ๊ตฌ์ฑํด๋ ๋จ
- ๊ทธ๋ฌ๋ ์ด๋. ๋์ค์๋ผ๋ ์ด ๋ฆฌ์คํธ๋ฅผ ๋ค๋ฅธ ์ฌ๋์ด ์ฌ์ฉํ๋ค๋ฉด ์์ธํ ์ ๋ณด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ด ์ด๋ ค์ธ ์ ์์
- ๊ทธ๋์ ์ด๋ฌํ ์ ๋ณด๋ฅผ ํ๋์ ํํ ํํ๋ก ๊ตฌ์ฑํด ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๊ฐ namedtuple์ด๋ค. C ์ธ์ด์์๋ struct๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋จ. ๋ค์ ์ฝ๋๋ฅผ ํ์ธํด๋ณด์
- ์ ์ฝ๋๋ ์ขํ ํ๋ฉด์์์ ์ ์ ์์น๋ฅผ ํํํ๊ธฐ ์ํด Point๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๊ฐ์ ์ ์ฅํ namedtuple
- Point = namedtuple(’Point', ['x', 'y']) ์ฝ๋์์ Point ๊ฐ์ฒด์ ์ด๋ฆ์ Point๋ก ์ง์ ํ๊ณ , ์ ์ฅ๋๋ ์์์ ์ด๋ฆ์ x์ y๋ก ์ง์
- ๋ค์์ผ๋ก Point ๊ฐ์ฒด๋ฅผ ์์ฑ
- ์์ฑ์ ํจ์์ ๋น์ท
- Point ๊ฐ์ฒด์์ ํธ์ y๋ฅผ ๋ณ์๋ก ์ฌ์ฉํ๊ณ ์๊ณ ๊ฐ๊ฐ p = Pointdl, y=22)์์ ์ฐจ๋ก๋ก ์ฌ์ฉ๋์ด ๊ฐ์ ์ ์ฅ๊ฐ๋ฅ
- ์ ๋ ฅ๋ ๊ฐ์ p ๋ณ์์ ์ ์ฅ
- ์ฌ๊ธฐ์ ์ฃผ๋ชฉํ ๊ฒ์ p ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ํธ์ถํ๋ ๋ฐฉ๋ฒ
- ์ฒซ์งธ, ์์์ ์ด๋ฆ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- p.x, p.y์ ๊ฐ์ด ๋ณ์๋ช ๊ณผ ์์์ ์ด๋ฆ์ ์ (.) ์ผ๋ก ์ฐ๊ฒฐํ๋ฉด ํด๋น ๊ฐ์ ๋ถ๋ฌ๋ผ ์ ์์
- ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ
- ์ธ๋ฑ์ค๋ ์ด๋ฆ์ด ๋ค์ด๊ฐ ์์๋๋ก ๊ฐ์ด ์ ์ฅ๋จ
- ์ฆ, p[0]์ Point ๊ฐ์ฒด์์ ๋จผ์ ์ ์ฅ๋์ด์ผ ํ๋ x๊ฐ์ ๋์
- p[1]์ Point ๊ฐ์ฒด์์ ๋ ๋ฒ์งธ๋ก ์ ์ฅ๋์ด์ผ ํ๋ y๊ฐ์ ๋์
- ์ด๋ก ์ธํด ๋ง์ ์ฐ์ฐ์ด๋ ์ธํจํน unpacking ์ฐ์ฐ ๋ฑ์ด ๋ชจ๋ ๊ฐ๋ฅํด์ง
'๐ ์คํฐ๋ > ํ์ด์ฌ ์คํฐ๋ ๊ฐ์์๋ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2ํ/๊น์ธ์ฐ] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (1) | 2023.05.11 |
---|---|
[4ํ/์ด์ ์] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (0) | 2023.05.11 |
[3ํ/๊น๊ฒฝ์] 7์ฃผ์ฐจ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (1) | 2023.05.10 |
[4ํ/๊น๋ฏผํ] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (0) | 2023.05.09 |
[1ํ/ํ๊ท๋ฆผ] 6์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ๋ฌธ์์ด (0) | 2023.05.04 |