์ค๋ ์ฒ์ '์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค' ๊ฐ์๋ฅผ ๋ค์๊ณ , ํฐ ํ๋ก์๋ ์ฝ๋ฉํ ์คํธ๊ฐ ์ด๋ค ์์ผ๋ก ์งํ๋๋ ์ง ๊ทธ๋ฆฌ๊ณ ๋ณต์ก๋ ๊ฐ๋ ๊ณผ ํ์ด์ฌ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ๋ฌธ๋ฒ์ ํ์ตํ์๋ค. ๋ณต์ก๋ ๊ฐ๋ ์ ์ด์ ๋ถํฐ ์ถ์์ ์ผ๋ก๋ง ์ดํด๋ฅผ ํ์๋๋ฐ, ์ค๋ ๊ฐ์๋ฅผ ํตํด ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋์ ๋ํ ๊ฐ๋ ์ ์ดํดํ๊ฒ ๋์๊ณ ๋ฌธ์ ํ์ด๋ฅผ ํ ๋ ๋ํ๋๋ ์๊ฐ ์ด๊ณผ์ ๋ํ ๊ฐ๋ ์ ์ด์ ์ผ ์ดํดํ๊ฒ ๋์๋ค. ํ์ด์ฌ์ ๋ฌธ๋ฒ์ ํ์ตํ๋ ํํธ์์๋ ์ด๋ฏธ ํ๊ต ๊ต์์๊ฐ์ ๋ฐฐ์ ๋ ๋ด์ฉ์ด ์์ด์, ๋ชจ๋ฅด๋ ๊ฐ๋ ๊ณผ ๊น๋จน์๋ ๊ฐ๋ ์์ฃผ๋ก ์ ๋ฆฌ๋ฅผ ํ์๋ค.
< ๋ณต์ก๋ >
- ์๊ฐ ๋ณต์ก๋: ํน์ ํ ํฌ๊ธฐ์ ์ ๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ ๋ถ์
- ๊ณต๊ฐ ๋ณต์ก๋: ํน์ ํ ํฌ๊ธฐ์ ์ ๋ ฅ์ ๋ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ถ์
=> ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ์ข์ ์๊ณ ๋ฆฌ์ฆ
O ํ๊ธฐ๋ฒ
- ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๋ ํญ๋ง์ ๊ณ ๋ คํ๋ ํ๊ธฐ๋ฒ (ํจ์์ ์ํ๋ง์ ๋ํ๋ด๊ฒ ๋๋ค)
์๊ฐ ๋ณต์ก๋ ๊ณ์ฐ
(1)
array = [3, 5, 1, 2, 4]
summary = 0
for x in array:
summary += x
print(summary)
# ์ํ์๊ฐ์ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋น๋กํ์ฌ ์ฆ๊ฐํจ
# O(N)
(2)
array = [3, 5, 1, 2, 4]
summary = 0
for x in array:
for y in array:
temp = x * y
print(temp)
# O(N^2)
# ๋ชจ๋ ์ด์ค๋ฐ๋ณต๋ฌธ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(N^2)์ธ ๊ฒ์ ์๋ (์์ค ์ฝ๋๊ฐ ๋ด๋ถ์ ์ผ๋ก ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋ค๋ฉด ๊ทธ ํจ์์ ์๊ฐ๋ณต์ก๋๊น์ง ๊ณ ๋ คํด์ผ ํจ)
** ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ์์ ์๊ฐ ์ ํ์ ํต์ 1~5์ด (๋๋ต 5์ด ์ ๋๋ก ์๊ฐํ๊ณ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ์ด ํฉ๋ฆฌ์ )
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์
- ์ง๋ฌธ ์ฝ๊ธฐ
- ์๊ตฌ์ฌํญ(๋ณต์ก๋) ๋ถ์
- ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์์ด๋์ด ์ฐพ๊ธฐ
- ์์ค์ฝ๋ ์ค๊ณ ๋ฐ ์ฝ๋ฉ
์ํ ์๊ฐ ์ธก์ ์์ค์ฝ๋ ์์
import time
start_time = time.time() #์ธก์ ์์
#ํ๋ก๊ทธ๋จ์์ค์ฝ๋
end_time = time. time() #์ธก์ ์ข
๋ฃ
print(“time:”, end_time - start_time) #์ํ์๊ฐ์ถ๋ ฅ
< Phython ๋ฌธ๋ฒ >
(1) ์์๋ถ๊ฐ 0์ผ ๋ 0์ ์๋ต
a = 5.
print(a) # output: 5.0
(2) ์ ์๋ถ๊ฐ 0์ผ ๋ 0์ ์๋ต
a = -.7
print(a) # output: -0.7
(3) ์ง์์ ํํ ๋ฐฉ์
ex ) 10์ 9์ ๊ณฑ = 1e9
=> ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์์๋ ๋๋ฌํ ์ ์๋ ๋ ธ๋์ ๋ํ์ฌ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๋ฌดํ(INF)๋ก ์ค์ ํ๊ณค ํ๋ค. ์ด๋ ๊ฐ๋ฅํ ์ต๋๊ฐ์ด 10์ต ๋ฏธ๋ง์ด๋ผ๋ฉด ๋ฌดํ(INF)์ ๊ฐ์ผ๋ก 1e9๋ฅผ ์ด์ฉํ ์ ์๋ค.
(4) ์ค์ํ
=> ๊ฐ๋ฐ๊ณผ์ ์์ ์ค์๊ฐ์ ์ ๋๋ก ๋น๊ตํ์ง ๋ชปํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ ์ ์๋ค. ์ด๋ด ๋๋ round() ํจ์๋ฅผ ์ด์ฉํ ์ ์๋ค.
=> ํ์ด์ฌ์์ ๋๋๊ธฐ ์ฐ์ฐ์(/)๋ ๋๋ ์ง ๊ฒฐ๊ณผ๋ฅผ ์ค์ํ์ผ๋ก ๋ฐํํ๋ค.
(5) ํน์ ์์๊ฐ n๋ฒ ๋ฐ๋ณต๋๋ ๋ฐฐ์ด ์์ฑ
n = 10
a = [0] * n
print(a) // output: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
(6) ์์์ index์ ๋ฐ๋ฅธ ์์ ์ถ๋ ฅ
a = [1, 2, 3, 4]
#๋ค์์ ์ฒซ ๋ฒ์งธ ์์ ์ถ๋ ฅ
print(a[-1]) # output: 4
#๋ค๋ฒ์งธ ์์ ๊ฐ ๋ณ๊ฒฝ
a[3] = 7
print(a) # output: [1, 2, 3, 7]
#๋๋ฒ์งธ ์์๋ถํฐ ์ธ๋ฒ์งธ ์์๊น์ง
print(a[1:3]) # output: [2, 3]
(7) ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
# 0๋ถํฐ 9๊น์ง์ ์๋ฅผ ํฌํจํ๋ ๋ฆฌ์คํธ
array = [ i for i in range(10)]
print(array)
# 0๋ถํฐ 19๊น์ง์ ์ ์ค์์ ํ์๋ง ํฌํจํ๋ ๋ฆฌ์คํธ
array = [ i for i in range(20) if i % 2 == 1]
print(array)
# 1๋ถํฐ 9๊น์ง์ ์๋ค์ ์ ๊ณฑ ๊ฐ์ ํฌํจํ๋ ๋ฆฌ์คํธ
array = [i * i for i in range(1,10)]
print(array)
=> ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ํนํ N X M ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ํ ๋ฒ์ ์ด๊ธฐํ ํด์ผ ํ ๋ ๋งค์ฐ ์ ์ฉํ๋ค.
# ์๋ชป๋ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
n = 4
m = 3
array = [[0] * m] * n
array[1][1] = 5
print(array) # output: [[0,5,0],[0,5,0],[0,5,0],[0,5,0]]
=> [[0] * [m]] ์ด ๊ฐ์ ๊ฐ์ฒด๋ก์ ์ธ์๋์ด ์ผ์ด๋๋ ํ์
(8) ๋ฐฐ์ด ๊ด๋ จ ์์ฃผ ์ฐ์ด๋ ํจ์
# ํน์ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ์ถ๊ฐ
a.insert(2,3)
print(“์ธ๋ฑ์ค 2์ 3 ์ถ๊ฐ: “, a)
# ํน์ ๊ฐ์ธ ๋ฐ์ดํฐ ๊ฐ์ ์ธ๊ธฐ
print(“๊ฐ์ด 3์ธ ๋ฐ์ดํฐ ๊ฐ์: “, a.count(3))
# remove_list ์ ํฌํจ๋์ง ์์ ๊ฐ๋ง์ ์ ์ฅ
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [ i for i in a if i not in remove_set]
print(result)
(9) ๋ฌธ์์ด : ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด
# ๋ฌธ์์ด ์ฌ๋ผ์ด์ฑ๋ ๊ฐ๋ฅ
a = "ABCDEF"
print(a[1:3]) # output: "BC"
(10) ํ๋ธ ์๋ฃํ
ํํ์ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ
- ์๋ก ๋ค๋ฅธ ์ฑ์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฌถ์ด์ ๊ด๋ฆฌํด์ผ ํ ๋
- ๋ฐ์ดํฐ์ ๋์ด์ ํด์ฑ์ ํค ๊ฐ์ผ๋ก ์ฌ์ฉํด์ผ ํ ๋
- ๋ฆฌ์คํธ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ ๋
(11) map ํจ์
# ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋๋๊ณ ๋ฆฌ์คํธ๋ก ๋ง๋ค๊ธฐ
n = int(input())
data = list(map(int,input().split()))
print(n)
print(data)
(12) ์ถ๋ ฅ์ ์ํ ์ ํ์ ์ธ ์์ค์ฝ๋
a = 1
b = 2
print(a,b)
print(7, end=" ")
print(8, end=" ")
answer = 7
print("์ ๋ต์" + str(answer) + "์
๋๋ค") # output: 7 8 ์ ๋ต์ 7์
๋๋ค