이것이 코딩테스트다 with 파이썬 기반 정리 내용입니당
이코테 3강
스택 ? 선입후출 방식
큐 ? 선입선출 방식
stack = []
stack.append(5)
stack.pop()
stack.append(3)
stack.append(1)
print(stack[::-1])
print(stack)
from collections import deque
queue =deque()
queue.append(5)
queue.append(3)
queue.append(1)
#queue.popleft()
#queue.reverse()
print(queue[0])
함수를 재귀적으로 호출
단순히 반복문을 사용하는것보다 코드가 간결해질 수 있음
두 자연수 A와 B에 대하여 (A>B)일 때 A를 B로 나눈 나머지를 R
이때 A와 B의 최대공약수는 B와 R의 최대공약수와 같음
이 아이디어를 그대로 재귀함수로 작성할 수 있음
def factorial_recursive(n):
if n<=1:
return 1
return n*factorial_recursive(n-1)
print(factorial_recursive(5))
def gcd(a,b):
if a%b == 0:
return b
else:
return gcd(b,a%b)
print(gcd(192,162))
graph = [ [],[2,3,8],[1,7],[1,4,5],[3,5],[3,4],[7],[2,6,8],[1,7]]
visited = [False]*9
def dfs(graph,v,visited):
visited[v]=True
print(v,end=' ')
for i in graph[v]:
if not visited[i]:
dfs(graph,i,visited)
dfs(graph,1,visited)
from collections import deque
graph = [ [],[2,3,8],[1,7],[1,4,5],[3,5],[3,4],[7],[2,6,8],[1,7]]
visited = [False]*9
def BFS(graph,v,visited):
queue=deque([v])
visited[v]=True
while queue:
v=queue.potleft()
print(v, end = ' ')
for i in graph[v]:
if not visited[i]:
queue.append(i)
visited[i] = True
후기.. 알고리즘은 재밌구나... 성취감이 있다.. 하지만 어렵다....