์ถ์ฒ : https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
๋ฆฟ์ฝ๋
์ถ์ฒ๋ฐฑ์ค
, ์ฝ๋์
, ํ๋ก๊ทธ๋๋จธ์ค
์ถ์ฒ์นด์นด์ค ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ํด์ค ๋ชจ์๋ณด๊ธฐ
๐๐ป https://tech.kakao.com/careers/
2018
2019
์ผ์ฑ : ์์ ํ์, DFS/BFS & ๊ฑฐ์ ๋ค ๋ง์์ผ ํจ
์นด์นด์ค : ๋ค์ํ ๋ฌธ์ ์ ํ, ๊ตฌํ(ํนํ ๋ฌธ์์ด) & ์ ๋ฐ ์ ๋๋ฉด ํํ
๋ผ์ธ : ๊ตฌํ, ํ์, ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ & ์ ๋ฐ ์ ๋๋ฉด ํํ
์๊ฐ ๋ณต์ก๋
: ํน์ ํ ํฌ๊ธฐ์ ์
๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ ๋ถ์
๊ณต๊ฐ ๋ณต์ก๋
: ํน์ ํ ํฌ๊ธฐ์ ์
๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ถ์
ํ์ด์ฌ ์๋ฃํ ๋ณ ์ฃผ์ ์ฐ์ฐ์์ ์๊ฐ ๋ณต์ก๋ ๋งํฌ
๐๐ป https://wayhome25.github.io/python/2017/06/14/time-complexity/
๐๐ป ์๊ฐ ๋ณต์ก๋: O(N^3) ์ฐจ์๊ฐ ๊ฐ์ฅ ํฐ ํญ๋ง ๋จ๊ธฐ๋ฏ๋ก โ
array = [3, 5, 1, 2, 4] # 5๊ฐ์ ๋ฐ์ดํฐ(N = 5)
summary = 0 # ํฉ๊ณ๋ฅผ ์ ์ฅํ ๋ณ์
# ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ํ์ธํ๋ฉฐ ํฉ๊ณ๋ฅผ ๊ณ์ฐ
for x in array:
summary += x
# ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
print (summary)
๐๐ป ์๊ฐ ๋ณต์ก๋: O(N)
array = [3, 5, 1, 2, 4] # 5๊ฐ์ ๋ฐ์ดํฐ(N = 5)
for i in array:
for j in array:
temp = i * j
print(temp)
๐๐ป ์๊ฐ ๋ณต์ก๋: O(N^2)
โข ์ฐธ๊ณ ๋ก ๋ชจ๋ 2์ค ๋ฐ๋ณต๋ฌธ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(N^2)์ธ ๊ฒ์ ์๋๋ค!
โข ์ฝ๋ ๋ด๋ถ์์ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋ค๋ฉด ๊ทธ ํจ์์ ์๊ฐ ๋ณต์ก๋๊น์ง ๊ณ ๋ คํด์ผ ํจ
์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณํ๊ธฐ ๐
๋ฌธ์ ์์ ๊ฐ์ฅ ๋จผ์ ํ์ธํด์ผ ํ๋ ๋ด์ฉ์ ์๊ฐ์ ํ(์ํ์๊ฐ ์๊ตฌ์ฌํญ)
์๊ฐ์ ํ์ด 1์ด์ธ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ ๋, ์ผ๋ฐ์ ์ธ ๊ธฐ์ค์ ์๋์ ๊ฐ๋ค.
- N์ ๋ฒ์๊ฐ 500์ธ ๊ฒฝ์ฐ: ์๊ฐ ๋ณต์ก๋๊ฐ O(N^3)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ
- N์ ๋ฒ์๊ฐ 2,000์ธ ๊ฒฝ์ฐ: ์๊ฐ ๋ณต์ก๋๊ฐ O(N^2)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ
- N์ ๋ฒ์๊ฐ 100.000์ธ ๊ฒฝ์ฐ: ์๊ฐ ๋ณต์ก๋๊ฐ O(NLogN)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ
- N์ ๋ฒ์๊ฐ 10,000,000์ธ ๊ฒฝ์ฐ: ์๊ฐ ๋ณต์ก๋๊ฐ O(N)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ
์์ค์ฝ๋๋ฅผ ํตํ ์ํ์๊ฐ ์ธก์
import time start_time = time.time() # ์ธก์ ์์ # ํ๋ก๊ทธ๋จ ์์ค์ฝ๋ end_time = time.time() # ์ธก์ ์ข ๋ฃ print("time:", end_time - start_time) # ์ํ ์๊ฐ ์ถ๋ ฅ
# ์์๋ถ๊ฐ 0์ผ ๋ 0์ ์๋ต
a = 5.
print(a) # 5.0
# ์ ์๋ถ๊ฐ 0์ผ ๋ 0์ ์๋ต
b = -.7
print(b) # -0.7
# 1,000,000,000์ ์ง์ ํํ ๋ฐฉ์
a = 1e9
print(a)
# 752.5
a = 75.25e1
print(a)
# 3.954
a = 3954e-3
print(a)
# N X M ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ ์ด๊ธฐํ
n = 4
m = 3
array = [[0] * m for m in range (n)]
print(array)
# N X M ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ ์ด๊ธฐํ (์๋ชป๋ ๋ฐฉ๋ฒ)
n = 4
m = 3
array = [[0] * m] * n
print(array)
array[1][1] = 5
print(array)
0(1)
์ ์๊ฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.# ์งํฉ ์๋ฃํ ์ด๊ธฐํ ๋ฐฉ๋ฒ 1
data = set([1, 1, 2, 3, 4, 4, 5])
print (data) # ์คํ ๊ฒฐ๊ณผ : {1, 2, 3, 4, 5}
# ์งํฉ ์๋ฃํ ์ด๊ธฐํ ๋ฐฉ๋ฒ 2
data = {1, 1, 2, 3, 4, 4, 5}
print (data) # ์คํ ๊ฒฐ๊ณผ : {1, 2, 3, 4, 5}
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
# ํฉ์งํฉ
print(a ! b) # {1, 2, 3, 4, 5, 6, 7}
# ๊ต์งํฉ
print(a & b) # {3, 4, 5}
# ์ฐจ์งํฉ
print(a - b) # {1, 2}
# ์๋ก์ด ์์ ์ถ๊ฐ
a.add(4)
# ์๋ก์ด ์์ ์ฌ๋ฌ ๊ฐ ์ถ๊ฐ
a.update([5, 6])
# ํน์ ํ ๊ฐ์ ๊ฐ๋ ์์ ์ญ์
a.remove(3)
โข ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ์ ์ต๋ํ ๋น ๋ฅด๊ฒ ๋ฐ์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
โข ํ์ด์ฌ์ ๊ฒฝ์ฐ sys ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋์ด ์๋ sys.stdin.readline() ๋ฉ์๋๋ฅผ ์ด์ฉํฉ๋๋ค.
โข ๋จ, ์
๋ ฅ ํ ์ํฐ(Enter)๊ฐ ์ค ๋ฐ๊ฟ ๊ธฐํธ๋ก ์
๋ ฅ๋๋ฏ๋ก rstrip() ๋ฉ์๋๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
import sys
# ๋ฌธ์์ด ์
๋ ฅ ๋ฐ๊ธฐ
data = sys.stdin.readline().rstrip()
print(data)
a = 0
def func():
global a
a += 1
for i in range(10):
func()
print(a) # 10
# ๋๋ค ํํ์์ผ๋ก ๊ตฌํํ ๋ํ๊ธฐ ๋ฉ์๋
print((lambda a, b: a + b)(3, 7)) # 10
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 10]
result = map(lambda a, b: a + b, list1, list2)
print(list(result)) # [7, 9, 11, 13, 15]
์์ด: ์๋ก ๋ค๋ฅธ n๊ฐ์์ ์๋ก ๋ค๋ฅธ r๊ฐ๋ฅผ ์ ํํ์ฌ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๊ฒ
from itertools import permutations
data = ['A', 'B', 'C'] # ๋ฐ์ดํฐ ์ค๋น
result = list(permutations(data, 3)) # ๋ชจ๋ ์์ด ๊ตฌํ๊ธฐ
print(result)
# ์คํ ๊ฒฐ๊ณผ
[('A','B','C'), ('A','C','B'), ('B','A','C'),
('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
์กฐํฉ: ์๋ก ๋ค๋ฅธ n๊ฐ์์ ์์์ ์๊ด ์์ด ์๋ก ๋ค๋ฅธ r๊ฐ๋ฅผ ์ ํํ๋ ๊ฒ
from itertools import combinations
data= ['A', 'B', 'C'] # ๋ฐ์ดํฐ ์ค๋น
result = list(combinations(data, 2)) # 2๊ฐ๋ฅผ ๋ฝ๋ ๋ชจ๋ ์กฐํฉ ๊ตฌํ๊ธฐ
print(result)
# ์คํ ๊ฒฐ๊ณผ: [('A','B'), ('A','C'), ('B','C')]
์ค๋ณต ์์ด๊ณผ ์ค๋ณต ์กฐํฉ
from itertools import product
data=['A', 'B', 'C'] # ๋ฐ์ดํฐ ์ค๋น
# 2๊ฐ๋ฅผ ๋ฝ๋ ๋ชจ๋ ์์ด ๊ตฌํ๊ธฐ (์ค๋ณต ํ์ฉ)
result = list(product(data, repeat=2))
print(result)
from itertools import combinations_with_replacement
data=['A', 'B', 'C'] # ๋ฐ์ดํฐ ์ค๋น
# 2๊ฐ๋ฅผ ๋ฝ๋ ๋ชจ๋ ์กฐํฉ ๊ตฌํ๊ธฐ (์ค๋ณต ํ์ฉ)
result = list(combinations_with_replacement(data, 2))
print(result)