๐ ํ์ด์ฌ์ผ๋ก ์ค๋นํ๋ ์ฃผ๋์ด ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์ฒดํฌ๋ฆฌ์คํธ
๋ง๋งํ ๋ฉด์ ์ค๋น, ์ด ์์๋๋ก๋ง ๋ฐ๋ผ๊ฐ๋ฉด ๋ฉ๋๋ค
๊ธฐ์ ๋ฉด์ ์ ์๋๊ณ ๋ฌด์๋ถํฐ ๊ณต๋ถํด์ผ ํ ์ง ๋ง๋งํ๋ ์ , ๋ค๋ค ์์ผ์ค ๊ฑฐ์์. ์๋ฃ๊ตฌ์กฐ๋ถํฐ ์์ํด์ผ ํ๋, ์๋๋ฉด ํ๋ก์ ํธ ๊ฒฝํ๋ถํฐ ์ ๋ฆฌํด์ผ ํ๋ ๊ณ ๋ฏผํ๋ค๊ฐ ์๊ฐ๋ง ํ๋ ค๋ณด๋ด๊ธฐ ์ฝ์ต๋๋ค.
์ด ๊ธ์์๋ ํ์ด์ฌ์ ๊ธฐ์ค์ผ๋ก ์ฃผ๋์ด ๊ฐ๋ฐ์๊ฐ ์ค์ ๋ก ์ค๋นํ๋ฉด ๋์์ด ๋๋ ํญ๋ชฉ๋ค์ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์ ๋ฆฌํ์ต๋๋ค. ์์๋๋ก ์ฒดํฌํด๋ณด๋ฉด์ ๋๋ง์ ๋ฉด์ ์ค๋น ๋ก๋๋งต์ ๋ง๋ค์ด๋ณด์ธ์.
1. ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ๊ธฐ ๋ค์ง๊ธฐ
๋ฉด์ ์์ ๊ฐ์ฅ ๋จผ์ ํ์ธํ๋ ๋ถ๋ถ์ ๋๋ค. ๋ณต์กํ ์ด๋ก ๋ณด๋ค๋ ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, ์คํ/ํ ๊ฐ์ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ด์ฌ ๋ฌธ๋ฒ์ผ๋ก ์์ ๋กญ๊ฒ ๋ค๋ฃฐ ์ ์๋์ง๊ฐ ํต์ฌ์ ๋๋ค.
def count_frequency(items):
freq = {}
for item in items:
freq[item] = freq.get(item, 0) + 1
return freq
- ์๊ฐ๋ณต์ก๋(Big-O)๋ฅผ ์ง์ ์ฝ๋๋ก ์ค๋ช ํ ์ ์๋๊ฐ
- ์ ๋ ฌ, ํ์(์ด์ง ํ์) ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ๊ตฌํํด๋ดค๋๊ฐ
- ์ฌ๊ท ํจ์์ ๋ฐ๋ณต๋ฌธ์ ์ฐจ์ด๋ฅผ ์์๋ก ์ค๋ช ํ ์ ์๋๊ฐ
2. ํ์ด์ฌ ์ธ์ด ์์ฒด์ ๋ํ ์ดํด
๋จ์ํ ๋ฌธ๋ฒ์ ์๋ ๊ฒ์ ๋์ด, "์ ๊ทธ๋ ๊ฒ ๋์ํ๋์ง"๋ฅผ ๋ฌผ์ด๋ณด๋ ์ง๋ฌธ์ด ๋ง์ต๋๋ค. ๊ฐ๋ณ/๋ถ๋ณ ๊ฐ์ฒด, ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ, GIL(Global Interpreter Lock) ๊ฐ์ ๊ฐ๋ ์ ์ค๋ฌด์์๋ ์์ฃผ ๋ฑ์ฅํ๋ ๋จ๊ณจ ์ง๋ฌธ์ ๋๋ค.
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
original[0][0] = 99
print(shallow) # [[99, 2], [3, 4]] - ์ํฅ ๋ฐ์
print(deep) # [[1, 2], [3, 4]] - ์ํฅ ์์
- ๋ฆฌ์คํธ์ ํํ์ ์ฐจ์ด๋ฅผ ์ฑ๋ฅ ๊ด์ ์์ ์ค๋ช ํ ์ ์๋๊ฐ
- ์ ๋๋ ์ดํฐ(yield)์ ์ผ๋ฐ ํจ์์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ์๋๊ฐ
- ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ง์ ์์ฑํด๋ณธ ๊ฒฝํ์ด ์๋๊ฐ
3. ์ค๋ฌดํ ์ฝ๋ฉ ํ ์คํธ & ๋ฌธ์ ํด๊ฒฐ ์ฐ์ต
์ด๋ก ์ ์๋ค๊ณ ๋์ด ์๋๋๋ค. ์ ํ ์๊ฐ ์์ ์ง์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํ ์คํธํ๋ ํ๋ จ์ด ํ์ํฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ์ค, ๋ฐฑ์ค, LeetCode ๊ฐ์ ํ๋ซํผ์์ ํ๋ฃจ 1~2๋ฌธ์ ์ฉ ๊พธ์คํ ํธ๋ ์ต๊ด์ ๋ค์ด๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
๋จ์ํ ์ ๋ต์ ๋งํ๋ ๊ฒ์์ ๊ทธ์น์ง ๋ง๊ณ , ๋ฉด์ ๊ด ์์์ ๋ด๊ฐ ์ ์ด ๋ฐฉ์์ ์ ํํ๋์ง๋ฅผ ๋ง๋ก ์ค๋ช ํ๋ ์ฐ์ต๊น์ง ํจ๊ป ํด๋ณด์ธ์. ์ฝ๋๋ณด๋ค ์ฌ๊ณ ๊ณผ์ ์ ๋ ์ค์ํ๊ฒ ๋ณด๋ ํ์ฌ๊ฐ ๋ง์ต๋๋ค.
- ์ ํ ์๊ฐ ๋ด์ ๋ฌธ์ ๋ฅผ ํ๊ณ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๋ ์ฐ์ต์ ํ๋๊ฐ
- ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๋ฐฉ์(๋ธ๋ฃจํธํฌ์ค → ์ต์ ํ)์ผ๋ก ํ์ด๋ดค๋๊ฐ
- ๋ด ํ์ด ๊ณผ์ ์ ๋ง๋ก ์ค๋ช ํ๋ ์ฐ์ต์ ํด๋ดค๋๊ฐ
4. ํ๋ก์ ํธ ๊ฒฝํ & ์ธ์ฑ ์ง๋ฌธ ์ ๋ฆฌ
๊ธฐ์ ์ง๋ฌธ๋งํผ ์ค์ํ ๊ฒ์ด ๋ณธ์ธ ํ๋ก์ ํธ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ค๋ช ํ๋ ๋ฅ๋ ฅ์ ๋๋ค. "์ ์ด ๊ธฐ์ ์ ์ ํํ๋์ง", "์ด๋ค ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง"๋ฅผ STAR(์ํฉ-๊ณผ์ -ํ๋-๊ฒฐ๊ณผ) ๊ตฌ์กฐ๋ก ๋ฏธ๋ฆฌ ์ ๋ฆฌํด๋๋ฉด ํจ์ฌ ์์ ์๊ฒ ๋ตํ ์ ์์ต๋๋ค.
- ์ด๋ ฅ์์ ์ ์ ํ๋ก์ ํธ๋ฅผ 3๋ถ ์์ ์ค๋ช ํ ์ ์๋๊ฐ
- ๊ธฐ์ ์ ํ์ ์ด์ ๋ฅผ ํธ๋ ์ด๋์คํ ๊ด์ ์์ ๋งํ ์ ์๋๊ฐ
- ํ์ ์ค ๊ฒช์๋ ๊ฐ๋ฑ์ด๋ ์ด๋ ค์๊ณผ ํด๊ฒฐ ๊ณผ์ ์ ์ ๋ฆฌํ๋๊ฐ
๋ง๋ฌด๋ฆฌ: ์๋ฒฝ๋ณด๋ค ๊พธ์คํจ์ด ๋จผ์ ์ ๋๋ค
ํ๋ฃจ์์นจ์ ๋ชจ๋ ํญ๋ชฉ์ ์๋ฒฝํ๊ฒ ์ค๋นํ ์๋ ์์ต๋๋ค. ์ค์ํ ๊ฑด ์ด ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๊ธฐ์ค ์ผ์ ๋ถ์กฑํ ์์ญ์ ํ์ ํ๊ณ , ๋งค์ผ ์กฐ๊ธ์ฉ ์ฑ์๋๊ฐ๋ ๊ฒ์ ๋๋ค. ํนํ ํ์ด์ฌ์ ๋ฌธ๋ฒ์ด ๊ฐ๊ฒฐํ ๋งํผ "์"๋ฅผ ์ค๋ช ํ๋ ๋ฅ๋ ฅ์ด ํฉ๊ฒฉ์ ๊ฐ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
์ฌ๋ฌ๋ถ์ด ์ค๋น ์ค์ธ ๋ฉด์ ์์ ๊ฐ์ฅ ์์ ์๋ ํญ๋ชฉ์ ๋ฌด์์ธ๊ฐ์? ๊ทธ ๋ถ๋ถ๋ถํฐ ์ค๋ 30๋ถ๋ง ํฌ์ํด๋ณด์ธ์.