ํฐ์คํ ๋ฆฌ ๋ทฐ
[ํค๋ํผ์คํธ ๋์์ธํจํด with Swift] - 1. ์ ๋ต ํจํด(Strategy Pattern)
B_log 2023. 3. 12. 19:33
๐ฅ ํค๋ํผ์คํธ ๋์์ธํจํด ์์ํ๊ธฐ
"ํค๋ํผ์คํธ ๋์์ธํจํด"์ Java๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ์ธ ์ฑ
์ด์ง๋ง, ์ฌ๊ธฐ์๋ Swift๋ก ๊ตฌํํ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณผ๊ฒ์!
ํญ์ ๊ทธ๋ ์ง๋ง ์ด ๊ธ์ ๊ฐ์ธ์ ์ธ ์ ๋ฆฌ์ ๋ชฉ์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฑ
์ ์ง์ ์ฝ์ด๋ณด๊ธฐ๋ฅผ ์ถ์ฒ๋๋ ค์ :]
๐ฅ ์ค๋ฆฌ ์๋ฎฌ๋ ์ด์ ๊ฒ์ ๋ง๋ค๊ธฐ
SimUDuck์ด๋ผ๋ ์ค๋ฆฌ ๊ฒ์์ ๋ง๋ค์ด๋ณผ๊ฒ์ :]
๋ฐฉ๋ฒ 1. ์ผ๋ฐ์ ์ธ ์์ ๊ตฌ์กฐ ์ฌ์ฉํ๊ธฐ
์ผ๋ฐ์ ์ธ ํ์ค ๊ฐ์ฒด์งํฅ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ Duck์ด๋ผ๋ Super class๋ฅผ ๋ง๋ค๊ณ , ์์์ ํตํด ์ฌ๋ฌ ์ค๋ฆฌ๋ฅผ ๋ง๋ค์ด์.
(private, final ๋ฑ ์ธ์ธํ ์ค์ ๋ฑ์ ์๋ตํ ๊ฒ์)
๊ฐ ์ค๋ฆฌ๋ค์ ๋ถ๋ชจ ํด๋์ค(Duck)์ ๋ฉ์๋๋ฅผ override ํ์ฌ ์ฌ์ฉํด์.
๐จ ์ถ๊ฐ ์๊ตฌ ์ฌํญ ๋ฐ์
โก๏ธ ์ค๋ฆฌ๋ ๋ ์ ์์ด์ผ ํฉ๋๋ค
์ฌ๊ธฐ์ Duck ํด๋์ค์ fly ๋ฉ์๋๋ฅผ ์ถ๊ฐํด์.
์ด๋ ๊ฒ ๋๋ฉด ๋ชจ๋ ์ค๋ฆฌ์ ํ๋์ ๋๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ผ์.
๋ฌธ์ ๋ ์ค๋ฆฌ ์ค์ ์ฅ๋๊ฐ ์ค๋ฆฌ์ฒ๋ผ ํ๋์ ๋ ์ ์๋ ์ค๋ฆฌ๊ฐ ์๋ค๋ ๊ฑฐ์์ ๐ฅฒ
์ด ๋ฌธ์ ๋ฅผ ๋จํธ์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ ์ง ๋ชปํ๋ ์ค๋ฆฌ์์ fly๋ฅผ override ํ์ฌ ์๋ฌด ๋์๋ ํ์ง ์๊ฒ ๋ง๋ค ์ ์์ด์.
ํ์ง๋ง ์ฌ๊ธฐ์ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์.
๐จ ์ถ๊ฐ ์๊ตฌ ์ฌํญ ๋ฐ์
โก๏ธ ์์ผ๋ก 6๊ฐ์๋ง๋ค ์ ํ์ ์ ๋ฐ์ดํธํ๊ธฐ๋ก ๊ฒฐ์
์ด๋ ๊ฒ ์์์ ์ฌ์ฉํ๋ ์ํฉ์์ ์ ํ ์คํ์ด ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ค๋ฉด ์ ์ง ๋ณด์์ ํฐ ๋ฆฌ์์ค๊ฐ ๋ค์ด๊ฐ์.
๋ชจ๋ Duck์ ๋ฉ์๋๋ค์ ์ ๋ถ ์ดํด๋ณด๋ฉด์ ์ํฉ์ ๋ฐ๋ผ ๋ณ๊ฒฝํด์ผ ํด์.
๋ฐฉ๋ฒ 2. ํ๋กํ ์ฝ(์ธํฐํ์ด์ค) ์ฌ์ฉํ๊ธฐ
์์ ๋ฐฉ๋ฒ 1์์ ๊ตฌํํ fly() ๋ฉ์๋๋ฅผ Duck ํด๋์ค์์ ๋นผ๊ณ Flyable์ด๋ผ๋ Protocol์ ๋ง๋ค์ด์ ์ฑํํ๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์.
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ์ Duck์ด๋ผ๊ณ ํ๋๋ผ๋ "ํ๋์ ๋๋ ๋ฅ๋ ฅ์ ๊ฐ์ง ์ค๋ฆฌ"๋ง ์ด ํ๋กํ ์ฝ์ ์ฑํ์์ผ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ด์.
๐ง ์ฑ ์์ ๋งํ๋ ์ด ๋ฐฉ๋ฒ์ ๋จ์
(์๋ฐ ๊ธฐ์ค์ผ๋ก) ์ด๋ ๊ฒ ๊ตฌํํ๋ฉด ์ฝ๋ ์ค๋ณต์ด ๋ง์ด ๋ฐ์ํด์.
fly์ ๊ธฐ๋ฅ์ด ๋๋ถ๋ถ ์ค๋ฆฌ์์ ๊ฐ๋ค๊ณ ํ์ ๋, Flyable์ ์ฑํํ๋ ์ค๋ฆฌ๋ค์์ ๊ฐ์ ์ฝ๋๊ฐ ๋ถํ์ํ๊ฒ ๋ฐ๋ณต๋์ด์ผ ํด์.
๋ ์๊ฐ๋ ๋์์ ์กฐ๊ธ ๋ฐ๊พธ๊ธฐ ์ํด Duck์ ์๋ธํด๋์ค์์ fly ๋ฉ์๋๋ค์ ์ ๋ถ ์์ ํด์ผ ํ ์๋ ์๋ค๋ ๋จ์ ์ด ์์ด์.
โก๏ธ Swift์์๋ ์ฌ์ค Protocol์ extension์์ func์ ์ ์ํ๋ ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ์์ ๋ฒ์ด๋ ์ ์์ด์.
Java์ ๋ค๋ฅด๊ฒ POP์ ๊ด์ ์์ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ
์์ ๋งํ๋ ๋จ์ ์ Swift์ ์ ์ฉ๋์ง ์๋๋ค๊ณ ์๊ฐํด์.
๐จ ๋์์ธ ์์น: ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฌ๋ผ์ง๋ ๋ถ๋ถ์ ์ฐพ์๋ด๊ณ , ๋ฌ๋ผ์ง๋ ๋ถ๋ถ๊ณผ ๋ถ๋ฆฌํ๋ค
๋ฌ๋ผ์ง๋ ๋ถ๋ถ์ ์ฐพ์์ ๋๋จธ์ง ์ฝ๋์ ์ํฅ์ ์ฃผ์ง ์๋๋ก '์บก์ํ'ํด์.
๊ทธ๋ฌ๋ฉด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ์๋์น ์๊ฒ ๋ฐ์ํ๋ ์ผ์ ์ค์ด๋ฉด์ ์์คํ ์ ์ ์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ด์.
์ด ์์น์ ์ ์ฉํ๋๋ฐ ๋ง์ ์๊ฐ์ ์์์ผ ํด์.
๋ฐ๋๋ ๋ถ๋ถ์ ๋ฐ๋ก ๋ฝ์์ ์บก์ํํ๋ค. ๊ทธ๋ฌ๋ฉด ๋์ค์ ๋ฐ๋์ง ์๋ ๋ถ๋ถ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ๊ทธ ๋ถ๋ถ๋ง ๊ณ ์น๊ฑฐ๋ ํ์ฅํ ์ ์๋ค
์ด ๊ฐ๋ ์ ๋ค๋ฅธ ๋ชจ๋ ๋์์ธ ํจํด์ ๊ธฐ๋ฐ์ ์ด๋ฃจ๋ ์์น์ด์์.
์ด๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ค๋ฆฌ ๋ฌธ์ ๋ฅผ ๋ค์ ์ดํด๋ณผ๊ฒ์.
Duck ํด๋์ค๋ฅผ '๋ณํํ๋ ๋ถ๋ถ๊ณผ ๊ทธ๋๋ก ์๋ ๋ถ๋ถ'์ผ๋ก ๋ถ๋ฆฌํ๋ ค๋ฉด, 2๊ฐ์ ํด๋์ค ์งํฉ์ ๋ง๋ค์ด์ผ ํด์.
ํ๋๋ ํ๋์ ๋๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๊ฒ, ๋ค๋ฅธ ํ๋๋ ๊ฝฅ๊ฝฅ ๊ฑฐ๋ฆฌ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ์ด์์.
๊ฐ ํด๋์ค ์งํฉ์๋ ๊ฐ๊ฐ์ ํ๋์ ๊ตฌํํ ๊ฒ์ ์ ๋ถ ์ง์ด๋ฃ์ด์.
์๋ฅผ ๋ค์ด, ๊ฝฅ๊ฝฅ๊ฑฐ๋ฆฌ๋ ํ๋์ ๊ตฌํํ๋ ํด๋์ค, ์์๊ฑฐ๋ฆฌ๋ ํ๋์ ๊ตฌํํ๋ ํด๋์ค, ๊ทธ๋ฆฌ๊ณ ์๋ฌด ์๋ฆฌ๋ ๋ด์ง ์๋ ํ๋์ ๊ตฌํํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์.
fly()์ quack()์ ์ค๋ฆฌ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ ธ์.
๊ทธ๋์ Duck ํด๋์ค๋ก๋ถํฐ ์ด ๋ ๋ฉ์๋๋ฅผ ๋ถ๋ฆฌํ๋ ค๋ฉด 2๊ฐ์ ๋ฉ์๋ ๋ชจ๋ Duck ํด๋์ค์์ ๋์ง์ด๋ด์ ๊ฐ ํ๋์ ๋ํ๋ผ ํด๋์ค ์งํฉ์ ์๋ก ๋ง๋ค์ด์ผ ํด์.
๊ทธ๋ฌ๋ฉด ์ด ํ๋๋ค์ ๊ตฌํํ๋ ํด๋์ค ์งํฉ์ ์ด๋ป๊ฒ ๋์์ธํด์ผ ํ ๊น์?
์ต๋ํ ์ ์ฐํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์ข์์!
์ ์ด์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ๊ฐ ์ด ๋ถ๋ถ์์ ๋ณ๊ฒฝ์ ์ด ์๊ธธ ๊ฐ๋ฅ์ฑ์ด ๋์์์์ผ๋๊น์.
๐จ ๋์์ธ ์์น: ๊ตฌํ๋ณด๋ค๋ ์ธํฐํ์ด์ค ๋ง์ถฐ์ ํ๋ก๊ทธ๋๋ฐํ๋ค.
๊ฐ ํ๋์ ์ธํฐํ์ด์ค๋ก ํํํ๊ณ , ์ด๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด์ ํ๋์ ๊ตฌํํด์.
์ด์ Duck ํด๋์ค์์ ๋๋ ํ๋๊ณผ ๊ฝฅ๊ฝฅ๊ฑฐ๋ฆฌ๋ ํ๋์ ๊ตฌํํ์ง ์์์.
ํ๋(Behavior) ์ธํฐํ์ด์ค๋ Duck ํด๋์ค๊ฐ ์๋๋ผ ํ๋ ํด๋์ค์์ ๊ตฌํํด์.
"์ธํฐํ์ด์ค์ ๋ง์ถฐ์ ํ๋ก๊ทธ๋๋ฐํ๋ค"๋ผ๋ ๋ง์ ์ฌ์ค "์์ ํ์์ ๋ง์ถฐ์ ํ๋ก๊ทธ๋๋ฐํ๋ค"๋ผ๋ ๋ง์ ๋๋ค.
์ฌ๊ธฐ์ ๋งํ๋ ์ธํฐํ์ด์ค๋ ์ค์์ ์ผ๋ก ์ฌ์ฉ๋์๋๋ฐ, ์๋ฐ์์ ๋งํ๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๊ธฐ๋ ํ๊ณ ์ธํฐํ์ด์ค๋ผ๋ ๊ฐ๋
์ ์ง์นญํ๊ธฐ๋ ํด์. ๋ฐ๋์ ์๋ฐ์ ์ธํฐํ์ด์ค(Swift์ ํ๋กํ ์ฝ)๋ฅผ ์ฌ์ฉํ๋ผ๋ ๋ป์ ์๋์์.
ํต์ฌ์ ์ค์ ์คํ ์์ ์ฐ์ด๋ ๊ฐ์ฒด๊ฐ ์ฝ๋์ ๊ณ ์ ๋์ง ์๋๋ก ์์ ํ์์ ๋ง์ถฐ ํ๋ก๊ทธ๋๋ฐํด์ ๋คํ์ฑ์ ํ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ด์์.
๋ํ ์ฌ๊ธฐ์ "์์ ํ์์ ๋ง์ถฐ์ ํ๋ก๊ทธ๋๋ฐํ๋ผ"๋ "๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ณดํต ์ถ์ ํด๋์ค๋ ์ธํฐํ์ด์ค ๊ฐ์ ์์ ํ์์ผ๋ก ์ ์ธํด์ผ ํ๋ค"๋ผ๋ ์๋ฏธ์์. ๊ฐ์ฒด๋ฅผ ๋ณ์์ ๋์ ํ ๋ ์์ ํ์์ ๊ตฌ์ฒด์ ์ผ๋ก ๊ตฌํํ ํ์์ด๋ผ๋ฉด ์ด๋ค ๊ฐ์ฒด๋ ๋ฃ์ ์ ์๋ ์ ์ฐ์ฑ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ด์์. "๊ทธ๋ฌ๋ฉด ๋ณ์๋ฅผ ์ ์ธํ๋ ํด๋์ค์์ ์ค์ ๊ฐ์ฒด์ ํ์์ ๋ชฐ๋ผ๋ ๋๋ค"๋ ์๋ฏธ๋ก๋ ํด์๋ ์ ์์ด์.
์ด๋ ๊ฒ ๊ตฌํํ ๊ฒฐ๊ณผ๋ฌผ์ ์๋์ ๊ฐ์์.
์ด๋ ๊ฒ ๋์์ธํ๋ฉด ๋ค๋ฅธ ํ์์ ๊ฐ์ฒด(์ค๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ๊ฐ์ฒด)์์๋ ๋๋ ํ๋๊ณผ ๊ฝฅ๊ฝฅ ๊ฑฐ๋ฆฌ๋ ํ๋์ ์ฌ์ฌ์ฉํ ์ ์์ด์.
์ด ํ๋ ์์ฒด๊ฐ ์ค๋ฆฌ ์์ ์จ๊ฒจ์ ธ์์ง ์์ผ๋๊น์!
๊ทธ๋ฆฌ๊ณ Duck ํด๋์ค๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์๋ก์ด ํ๋์ ์ถ๊ฐํ ์ ์์ด์.
์์์ ์ธ ๋ ๋ ์๊ฒ ๋๋ ๋ถ๋ด์ ๋จ์ณ ๋ฒ๋ฆฌ๊ณ ์ฌ์ฌ์ฉ์ ์ฅ์ ์ ๊ฐ์ ธ๊ฐ ์ ์์ด์ :]
๐ค Q. ํ๋๋ง ๋ํ๋ด๋ ํด๋์ค๋ ์ด์ํด์. ํด๋์ค๋ ์๋ ์ด๋ค ๋์์ ๋ํ๋ด๋ ๊ฒ ์๋๊ฐ์? ์ํ, ํ๋์ ๋ชจ๋ ํฌํจํด์ผ ํ๋ ๊ฒ ์๋๊ฐ์?
๊ฐ์ฒด์งํฅ ์์คํ ์์๋ ์ง๋ฌธํ ๋ด์ฉ์ด ๋ง์ต๋๋ค. ํ์ง๋ง "ํ๋"๋ ์ํ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์์ด์! (์ต๊ณ ๋์ด, ์๋ ๋ฑ)
๊ฐ์ฒด๋ผ๋ ๊ฐ๋ ์ด ๋ฐ๋์ ์ด๋ค ํ๋์ ๋ฌผ์ฒด๋ก ํ์ ๋ ํ์๋ ์์ด์.
๊ทธ๋ผ ์์ ํ๋กํ ์ฝ์ ๊ฐ์ง๊ณ Duck์ ๋ค์ ๊ตฌํํด ๋ณผ๊ฒ์!
๐ฃ ๋์ ์ผ๋ก ์ค๋ฆฌ์ ํ๋ ์ง์ ํ๊ธฐ
์์์ ํน์ ๊ตฌํ์ ๋ง์ถฐ์ ํ๋ก๊ทธ๋๋ฐํ๋ฉด ์ ๋๋ค๊ณ ํ์ด์.
ํ์ฌ๋ ์์ ์๋ ์์ฑ์๋ฅผ ๋ณด๋ฉด Quack๋ผ๋ ๊ตฌ์ ํด๋์ค์ ์ธ์คํด์ค๋ก ์ ์ธ๋์ด ์๊ธฐ ๋๋ฌธ์ Duck์ด Quack์ ๊ตฌํ์ ๋ง์ถฐ์ ธ ์์ด์.
์์์๋ ํ๋กํผํฐ์ ์์ฑ ์์ ์ ๋์์ด ํ์ ๋์ง๋ง, ์ด ๋ถ๋ถ์ ์ ์ฐํ๊ฒ ๋ง๋ค ์ ์์ด์.
์๋์ ๊ฐ์ด ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ฉด ์ฝ๋ ์งํ ์ค์ ๋์์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํด์.
๐ค ๋ ํด๋์ค์ ๊ด๊ณ
"A์๋ B๊ฐ ์๋ค"์ ๊ด๊ณ๋ฅผ ์๊ฐํด ๋ณด๋ฉด, ์ค๋ฆฌ์๋ FlyBehavior, QuackBehavior๊ฐ ์์ด์.
๊ฐ๊ฐ ๋๋ ํ๋๊ณผ ๊ฝฅ๊ฝฅ ๊ฑฐ๋ฆฌ๋ ํ๋์ ์์ํด์.
์ด๋ฐ ์์ผ๋ก "๋ ํด๋์ค๋ฅผ ํฉ์น๋ ๊ฒ์ ๊ตฌ์ฑ(composition)์ ์ด์ฉํ๋ค"๋ผ๊ณ ํด์.
๐จ ๋์์ธ ์์น: ์์๋ณด๋ค๋ ๊ตฌ์ฑ์ ํ์ฉํ๋ค.
Composition์ ํ์ฉํ๋ฉด ์์คํ ์ ์ ์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ด์.
๐ iOS์์ ์ ๋ต ํจํด ๊ตฌํํด๋ณด๊ธฐ
protocol Theme {
var backgroundColor: UIColor { get }
var textColor: UIColor { get }
// ์ถ๊ฐ์ ์ธ ํ
๋ง ๊ด๋ จ ํ๋กํผํฐ ๋ฐ ๋ฉ์๋ ์ ์
}
struct LightTheme: Theme {
var backgroundColor: UIColor = .white
var textColor: UIColor = .black
// ์ถ๊ฐ์ ์ธ ํ
๋ง ๊ด๋ จ ํ๋กํผํฐ ๋ฐ ๋ฉ์๋ ๊ตฌํ
}
struct DarkTheme: Theme {
var backgroundColor: UIColor = .black
var textColor: UIColor = .white
// ์ถ๊ฐ์ ์ธ ํ
๋ง ๊ด๋ จ ํ๋กํผํฐ ๋ฐ ๋ฉ์๋ ๊ตฌํ
}
class ViewController: UIViewController {
var theme: Theme
init(theme: Theme) {
self.theme = theme
super.init(nibName: nil, bundle: nil)
}
// ๋ทฐ ์ปจํธ๋กค๋ฌ์ ํ
๋ง ๊ด๋ จ ๋ก์ง์ ๊ตฌํ
// ์: ๋ฐฐ๊ฒฝ์ ์ค์ , ํ
์คํธ ์์ ์ค์ ๋ฑ
}
์์ ์์์์ Theme ํ๋กํ ์ฝ์ ํ
๋ง ๊ด๋ จ ์์ฑ์ ์ ์ํ๊ณ ์์ด์.
๊ทธ๋ฆฌ๊ณ LightTheme๊ณผ DarkTheme์ ๊ฐ๊ฐ ํ
๋ง ํ๋กํ ์ฝ์ ๊ตฌํํ ์ ๋ต ํด๋์ค์์.
์ด๋ ๊ฒ ๊ตฌํ๋ ์ ๋ต ํจํด์ ํตํด ์ ํ๋ฆฌ์ผ์ด์
์ ํ
๋ง๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ด์.
๐ ์ ๋ฆฌ
์ ๋ต ํจํด(Strategy Pattern)์ ์๊ณ ๋ฆฌ์ฆ๊ตฐ์ ์ ์ํ๊ณ ์บก์ํํด์ ๊ฐ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ๊ตฐ์ ์์ ํด์ ์ธ ์ ์๊ฒ ํด ์ค์.
์ ๋ต ํจํด์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ๋ฆฌํด์ ๋
๋ฆฝ์ ์ธ ๋ณ๊ฒฝ(๊ด๋ฆฌ)์ด ๊ฐ๋ฅํด์!
'๊ฐ๋ฐ ๋ ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํค๋ํผ์คํธ ๋์์ธํจํด with Swift] - 2.์ต์ ๋ฒ ํจํด(Observer Pattern) (0) | 2023.03.19 |
---|---|
[ํด๋ฆฐ ์ฝ๋] ์๊ฒฐ - ํ๊ธฐ (0) | 2021.12.18 |
[ํด๋ฆฐ ์ฝ๋] 12์ฅ - ์ฐฝ๋ฐ์ฑ (0) | 2021.12.15 |
[ํด๋ฆฐ ์ฝ๋] 11์ฅ - ์์คํ (0) | 2021.12.14 |
[ํด๋ฆฐ ์ฝ๋] 10์ฅ - ํด๋์ค (0) | 2021.12.13 |
- Total
- Today
- Yesterday
- Distinct#Codility#Python
- Swift#Tuples#Range
- ํ ํ๋ก์ ํธ#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ํฐํ๋น์น#๋ฆฌ์ฝ#xbox#controller
- ์์ด์ฌ์ดํด#BOJ#Python
- ๋ฐ๋ณต์์ด#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- API#lazy#
- ๋ ์ง ๊ณ์ฐ#BOJ#์์ ํ์#Python
- ์ํธ์ฝ๋#dp#BOJ#Python
- ๋์ ์๋ฅด๊ธฐ#์ด๋ถํ์#BOJ#Python
- django#slicing
- ๋ณ๋ ๋์ดํธ#BOJ#ํ์๋ฒ#Python
- ๋ฐฐ์ดํฉ์น๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- N์ผ๋ก ํํ#DP#Programmers#Python
- ์ฌ์๊ฐ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- ๋๋ฌด์๋ฅด๊ธฐ#BOJ#์ด๋ถํ์#Python
- ํ์ด์ฌ์๊ณ ๋ฆฌ์ฆ์ธํฐ๋ทฐ#4์ฅ
- Brackets#Stacks and Queues#Codility#Python
- ์ข ์ด์๋ฅด๊ธฐ#๋ถํ ์ ๋ณต#BOJ#Python
- ๊ณต์ ๊ธฐ ์ค์น#BOJ#์ด๋ถํ์#Python
- filter#isalnum#lower
- ํ ๋งํ #๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- PassingCars#Codility#Python
- ๋ฆฌ๋ชจ์ปจ#์์ ํ์#BOJ#Python
- NumberofDiscIntersections#Codility#Sort#Python
- ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ#BackTracking
- Triangle#Sorting#Codility#Python
- ์ฟผ๋ํธ๋ฆฌ#BOJ#๋ถํ ์ ๋ณต#Python
- ๋ฏธ๋ก ํ์#๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ#Python
- django
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |