11/15
링크드 리스트
class Node:
def __init__(self, data):
self.data = data
self.next = None
# 3을 가진 Node 를 만드려면 아래와 같이 하면 됩니다!
node = Node(3) # 현재는 next 가 없이 하나의 노드만 있습니다. [3]
<aside> 👉 그러면 이제 노드들을 만들어서 연결해볼까요?
</aside>
first_node = Node(5) # 현재는 next 가 없이 하나의 노드만 있습니다. [5]
second_node = Node(12) # [12] 를 들고 있는 노드를 만듭니다.
first_node.next = second_node # 그리고, [5]의 next 를 [12]로 지정합니다. [5] -> [12]
<aside> ⚠️ 이 노드들을 일일이 계속 연결해주려면 변수를 지정하고 위와 같은 코드를 반복해야 하는데, 너무 번거롭습니다!
만약 1억개의 노드가 있다면, 저 코드를 반복해서 1억번을 쳐야 합니다. 상상만해도 손가락이 아프겠죠?
</aside>
이진탐색
<aside> 😎 한 번, 순차 탐색과 이진 탐색을 둘 다 짜보면서 비교해보겠습니다!
우선 순차 탐색의 간단한 코드를 적어볼게요!
1에서 16까지 오름차순으로 정렬되어 있는 배열이 있을 때, 14를 찾는 코드입니다!
</aside>
finding_target = 14
finding_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
def is_existing_target_number_sequential(target, array):
for number in array:
if target == number:
return True
return False
result = is_existing_target_number_sequential(finding_target, finding_numbers)
print(result) # True
<aside> 👉 array 를 따라가면서 target 이 존재한다면 True 를 반환하고, 끝까지 없다면 False 를 반환하는 간단한 코드입니다!
</aside>
재귀함수
이번에 배울 재귀 함수는 바로 자기 자신을 호출하는 함수입니다!
팩토리얼은 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 의미합니다. 예를 들면 아래와 같습니다
회문은 똑바로 읽으나 거꾸로 읽으나 똑같은 단어나 문장을 의미합니다. 토마토 오디오 아시아 일요일 소주만병만주소 가련하시다 사장 집 아들 딸들아 집 장사 다시 하련가 같은 단어를 회문 이라고 합니다! 컴퓨터는 문자열을 보고 아래처럼 어떻게 회문인지 확인할 수 있을까요?
# palindrome 은 회문을 의미합니다!
is_palindrome("토마토") # True
is_palindrome("tomato") # False
is_palindrome("abcba") # True
지금 진도가 많이 뒤처지고있길래 빠르게 빠르게 진도 맞춰나가고 있다