1번에 있는 코드들을 2번 사진에 있는 위에 쪽 처럼 생각을 했었다. 천천히 다시 천천히 읽다 보니까 밑에 있는 내용이라는 걸 깨닫게 되었다!
다른 분들보다는 느릴 지 몰라도 그래도 확실히 알아가는 게 좋다고 생각해서 많은 진도는 나가지 못했다... 링리... 너는 왤케 날 힘들게 하니!!
두번째 원소의 메모리 주소: 최초의 원소메모리주소 + 원소데이터 타입에 따른 바이트 크기
배열
조회 O(1)의 조회시간을 가짐, 상수적
추가/삭제: 배열 끝에다 할 시에 O(1), 다른곳에 할 시 O(N)
정렬: 다 다름...
검색: O(N) 처음부터 끝까지 다 찾아봄
링크드리스트
기차로 비유해주셨다.
화물칸들을 노드, 연결고리를 포인터
맨앞 노드는 head, 포인터가 NULL tail
한줄요약
배열: 데이터에 빈번하게 접근 시 유용
링크드리스트: 삽입/삭제가 빈번할 시에 유용
class Node:
def __init__(self,data): #self 는 자가자신을 지칭
self.data = data #클래스 내부 사용되는 저장되는 변수/파라미터
self.next = None
class 클래스명:
pass #안에 아무런 내용 없음, 빈 클래스 생성
a = 클래스명() 클래스를 통한 새로운 객체 생성
print(a) #주소값으로 분류 한 걸 볼 수 있음
print(a.param) param의 값을 불러올때
a.A() A라는 메소드를 실행
노드 연결시키기 ex)
first_node = Node(5) second_node = Node(12) first_node.next = second_node
링크드리스트에서는 head node만 가지고 있으면 된다!
self.head = Node(data)
자습하며 얻은정보
for문 안에 for문은 곱하기와 비슷하다!
나누기의 몫 연산자: //