#양의 정수n의 팩토리얼 구하기
>>> def factorial(n:int) -> int:
if n>0:
return n*factorial(n-1)
else:
return 1
>>> if __name__ == '__main__':
n=int(input('출력할 팩토리얼값 입력해라:'))
print(f'{n}의 팩토리얼은 {factorial(n)}입니다')
출력할 팩토리얼값 입력해라:23
23의 팩토리얼은 25852016738884976640000입니다
[Do it! 자료구조, 알고리즘 Python]
#하노이의 탑 구현하기
>>> def move(no:int, x:int, y:int) -> None:
if no>1:
move(no-1, x, 6-x-y)
print(f'원반[{no}]fmf {x}기둥에서 {y}기둥으로 옮긴다.')
if no>1:
move(no-1,6-x-y,y)
>>> print('하노이 탑 구현')
하노이 탑 구현
>>> n=int(input('원반개수입력:'))
원반개수입력:5
>>> move(n,1,3)
원반[1]fmf 1기둥에서 3기둥으로 옮긴다.
원반[2]fmf 1기둥에서 2기둥으로 옮긴다.
원반[1]fmf 3기둥에서 2기둥으로 옮긴다.
원반[3]fmf 1기둥에서 3기둥으로 옮긴다.
원반[1]fmf 2기둥에서 1기둥으로 옮긴다.
원반[2]fmf 2기둥에서 3기둥으로 옮긴다.
원반[1]fmf 1기둥에서 3기둥으로 옮긴다.
원반[4]fmf 1기둥에서 2기둥으로 옮긴다.
원반[1]fmf 3기둥에서 2기둥으로 옮긴다.
원반[2]fmf 3기둥에서 1기둥으로 옮긴다.
원반[1]fmf 2기둥에서 1기둥으로 옮긴다.
원반[3]fmf 3기둥에서 2기둥으로 옮긴다.
원반[1]fmf 1기둥에서 3기둥으로 옮긴다.
원반[2]fmf 1기둥에서 2기둥으로 옮긴다.
원반[1]fmf 3기둥에서 2기둥으로 옮긴다.
원반[5]fmf 1기둥에서 3기둥으로 옮긴다.
원반[1]fmf 2기둥에서 1기둥으로 옮긴다.
원반[2]fmf 2기둥에서 3기둥으로 옮긴다.
원반[1]fmf 1기둥에서 3기둥으로 옮긴다.
원반[3]fmf 2기둥에서 1기둥으로 옮긴다.
원반[1]fmf 3기둥에서 2기둥으로 옮긴다.
원반[2]fmf 3기둥에서 1기둥으로 옮긴다.
원반[1]fmf 2기둥에서 1기둥으로 옮긴다.
원반[4]fmf 2기둥에서 3기둥으로 옮긴다.
원반[1]fmf 1기둥에서 3기둥으로 옮긴다.
원반[2]fmf 1기둥에서 2기둥으로 옮긴다.
원반[1]fmf 3기둥에서 2기둥으로 옮긴다.
원반[3]fmf 1기둥에서 3기둥으로 옮긴다.
원반[1]fmf 2기둥에서 1기둥으로 옮긴다.
원반[2]fmf 2기둥에서 3기둥으로 옮긴다.
원반[1]fmf 1기둥에서 3기둥으로 옮긴다.
#8퀸 문제 알고리즘 구현
>>> pos = [0]*8
>>> flag_a = [False]*8
>>> flag_b = [False]*15
>>> flag_c = [False]*15
>>> def put() -> None:
for j in range(8):
for i in range(8):
print('+' if pos[i]==j else'-', end='')
print()
print()
>>> def set(i:int) -> None:
for j in range(8):
if( not flag_a[j]
and not flag_b[i+j]
and not flag_c[i-j+7]):
pos[i]=j
if i ==7:
put()
else:
flag_a[j] = flag_b[i+j] = flag_c[i-j+7] = True
set(i+1)
flag_a[j]=flag_b[i+j]=flag_c[i-j+7]=False
>>> set(0)
+-------
------+-
----+---
-------+
-+------
---+----
-----+--
--+-----
+-------
------+-
---+----
-----+--
-------+
-+------
----+---
--+-----
+-------
-----+--
-------+
--+-----
------+-
---+----
-+------
----+---
(...생략...)