[๐คCode Kata] 3week-4,5
-DAY4-
<๋ฌธ์ >
์ฃผ์ด์ง ์ซ์ ๋ฐฐ์ด์์, 0์ ๋ฐฐ์ด์ ๋ง์ง๋ง์ชฝ์ผ๋ก ์ด๋์์ผ์ฃผ์ธ์.
์๋ ์๋ ์ซ์์ ์์๋ ๋ฐ๊พธ์ง ๋ง์์ฃผ์ธ์.
์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์๋ ์ ๋ฉ๋๋ค.
Input: [0,1,0,3,12] -> Output: [1,3,12,0,0]
์ ๊ทผ๋ฐฉ๋ฒ
<๋ฌธ์ >
์ฃผ์ด์ง ์ซ์ ๋ฐฐ์ด์์, 0์ ๋ฐฐ์ด์ ๋ง์ง๋ง์ชฝ์ผ๋ก ์ด๋์์ผ์ฃผ์ธ์.
์๋ ์๋ ์ซ์์ ์์๋ ๋ฐ๊พธ์ง ๋ง์์ฃผ์ธ์.
์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์๋ ์ ๋ฉ๋๋ค.
Input: [0,1,0,3,12] -> Output: [1,3,12,0,0]
์๊ฐ๋ณด๋ค์ฌ์ด๋ฐ?๋ ์๋๊ณ ,
๋จผ์ 0์ ๊ฐฏ์๋ฅผ ์ธ๊ณ , ๊ทธ๋ค์ ๋ฆฌ์คํธ์์ ์์๋ฅผ ์ ๊ฑฐํ๋ ๋งค์๋๋ฅผ ์ด์ฉํด์ 0์ ์ ๊ฑฐํ๋ค ๋ง์ง๋ง์ผ๋ก append๋ฅผ ํตํด ๋ง์ง๋ง๋ถ๋ถ์ ์ฒ์์ ์ธ์ด๋ 0์ ๊ฐฏ์๋งํผ 0์ ์ถ๊ฐํ๋๋ฐฉ๋ฒ์ ์๊ฐํ๋ค.
def move_zeroes(nums):
# ์ฌ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์
test = nums.count(0)
while test != 0:
nums.remove(0)
nums.append(0)
test -= 1
return nums
Model Solutions
def moveZeroes(nums):
last0 = 0
for i in range(0, len(nums)):
if nums[i] != 0:
nums[i], nums[last0] = nums[last0], nums[i]
last0 += 1
return nums
0์ ์ฌ์ ์ ์ง์ ํ๋ค ์ซ์๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๋ค.
์ ๋ฐํ๋ฐฉ๋ฒ!!! ๋ด๊ฐ ์ ์ผ ์ด๋ ค์ํ๋ ๊ฐ๋
์ด nums[i], nums[last0] = nums[last0], nums[i]
์ธ๋ฐ ์ง์ง ๋งค๋ฒ ๋ณผ์๋ก ์ ๊ธฐํ๋ค ใ
ใ
..
-DAY5-
<๋ฌธ์ >
์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ํฉํ ๋ฆฌ์ผ(factorial)์ ๊ตฌํ๋ ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
ํฉํ ๋ฆฌ์ผ์ด๋ 1์์๋ถํฐ n๊น์ง์ ์ ์๋ฅผ ๋ชจ๋ ๊ณฑํ๊ฒ์ ๋งํฉ๋๋ค.
์์
1! = 1
2! = 1 2
5! = 1 2 3 4 * 5
์ ๊ทผ๋ฐฉ๋ฒ
<๋ฌธ์ >
์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ํฉํ ๋ฆฌ์ผ(factorial)์ ๊ตฌํ๋ ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
ํฉํ ๋ฆฌ์ผ์ด๋ 1์์๋ถํฐ n๊น์ง์ ์ ์๋ฅผ ๋ชจ๋ ๊ณฑํ๊ฒ์ ๋งํฉ๋๋ค.
์์
1! = 1
2! = 1 2
5! = 1 2 3 4 * 5
์ฌ๊ท ํจ์(recursion)์ ๋ํ ๋ด์ฉ์ด์๋ค.
๋ฌธ์ ์์ฒด๋ ์ฌ์ด๋ฐ, ์๋ก์ด ๊ฐ๋
์ด๋ผ ํ๋ฒ ๊ตฌ๊ธ๋ง์ผ๋ก ๊ฐ๋
์ ์ ๋ฆฌํ๊ณ ๋ฌธ์ ๋ฅผ ํ์๋ค.
def factorial(n):
if n == 0:
return 1
return n * factorial(n-1)
์ฌ๊ท ํจ์(recursion)
ํจ์์์์ ํจ์๋ณธ์ธ์ ์คํํ์ฌ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ญ์๋ฆฐ๊ฐ ์ถ๊ฒ ์ง๋ง, ์์ธํ ๋ณด๋ฉด ์ด๋ฌํ๋ค.
def recursion_print():
print("ํจ์ ์คํ")
recursion_print()
recursion_print()
๊ฒฐ๊ณผ๊ฐ์
ํจ์ ์คํ
ํจ์ ์คํ
...
ํจ์ ์คํ
RecursionError: maximum recursion depth exceeded while calling a Python object
๋ก ๋๋๋ฐ ์ฌ๊ทํจ์๋ ๋ฌดํํ ๊ฑฐ ๊ฐ์ง๋ง ๋ฐ๋ณตํ ์ ์๋ ํ์๊ฐ ํ์ ๋์ด์๋ค(์ฌ๋์ด ๋ณด๊ธฐ์ ๋ฌดํํ์ง๋ง..) ๋ํ ์ฌ๊ท ํจ์๋ ์กฐ๊ฑด๋ฌธ์ ํตํด์ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค.
Model Solution
def factorial(n):
if (n == 0):
return 1
return n * factorial(n-1)
๋ด๊ฐ ์ ๊ทผํ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๋ค~ ์ํธโญ๏ธ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([๐คCode Kata] 3week-4,5), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@fhwmqkfl/Code-Kata-3week-45์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค