목록패스트캠퍼스 - 자료구조와 알고리즘 (24)
프론트엔드 정복하기
더블 링크드 리스트 이중 연결 리스트라고도 함 데이터에 이전데이터주소, 다음데이터주소 모두가 있다. 양방향으로 연결되어있어 노드 탐색이 양쪽으로 모두 가능하다. 어떤 데이터를 찾으려면 head부터 순차적으로 찾아나가야하는 단점을 보완했다고 할 수 있다.
링크드 리스트 - 특정 노드를 삭제하는 경우 1) 가장 첫번째 요소를 삭제한다? head가 바뀌는 것. 2) 가장 마지막 요소를 삭제한다? 마지막에서 2번째 요소의 next(pointer)를 null 또는 None으로 바꿔줘야 한다. 3) 중간에 있는 요소를 삭제한다? 중간 요소 / 앞에 있는 요소의 pointer 가 --> 중간 요소 뒤에 있는 요소를 가리켜야 한다. **마지막 요소, 중간 요소를 삭제하는 기능은 사실 같다. 자신을 제거 / 자신의 직전 요소의 next가 자기 다음 요소를 가리킴(마지막요소는 자연스레 null, None이 됨)
객체 기본 class Dave: width = 0 height = 0 color = '' square1 = Dave() square2 = Dave() square1.width = 10 square1.height = 5 square1.color = 'red' square2.width = 7 square2.height = 7 square2.color = 'blue' 위에서 square1 = Dave() 구문처럼 변수에 class를 선언하는것이 객체를 인스턴스화하는 것이다. 그저 Dave() 로는 객체를 사용할 수 없다. 객체와 메소드 class Quadrangle: width = 0 height = 0 color = "black" def get_area(self): return self.width * sel..
링크드 리스트란 ) 연결 리스트라고도 함 '배열'은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 '링크드 리스트'는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 배열의 단점을 극복 본래 C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 링크드 리스트 기본 구조와 용어 노드(Node): 데이터 저장 단위 (데이터값, 포인터) 로 구성 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 장*단점 ) 장점 배열과 달리 미리 데이터 공간을 확보하지 않아도 됨 단점 연결을 위한 별도의 데이터 공간(pointer)이 필요해 저장공간 효율이 높지 않음 연결 정보를 찾는 시간이 걸리므로 접근..
스택 : LIFO 정책을 갖는다. 대표적인 스택의 활용 - 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 push : 데이터 스택에 넣기 pop : 데이터 스택에서 꺼내기 재귀함수와 스택 아래는 운영체제 과목에서 깊게 설명해야 이해할 수 있는 부분이다. 프로세스 스택의 구조까지 이해할 필요는 없다. 다만, 함수 위에 함수가 호출되면 스택같은 구조로 함수가 쌓이고, 맨위 함수가 끝나면 그 다음( 그 아래) 함수가 불려진다는 프로세스만 이해하면 된다. # 재귀 함수 def recursive(data): if data < 0: print ("ended") else: print(data) recursive(data - 1) print("returned", data) recursive(4) 4 3 2 1 0 en..
def: 함수를 만들 때 사용하는 예약어 def 함수명(매개변수): ... 여러 가지 함수 # 일반적 함수 def test(a): return a # 입력값이 없는 함수 def test(): return 1 # 결과값이 없는 함수 def test(a): print(a) # 입력값, 결과값이 없는 함수 def test(): print(1) ** 매개변수를 지정해서 사용할 수 있다. (--> 순서와 관계없이 사용 가능) def add(a,b): return a, b result = add(a=2, b=4) # or result = add(b=1, a=3) ** 매개변수에 초기값 지정 def add(a,b=3): return a, b ** 입력값이 몇 개가 될지 모를 때 def add_many(*arg): f..