스파르타코딩클럽 내일배움캠프4기 -11-

JaeSung Lee·2022년 11월 11일
0

내일배움캠프4기

목록 보기
11/24

알고리즘 계속해서 썰풀겠다.

어레이와 링크드 리스트

array

소녀시대 숙소 생각

  • 배열은 크기가 정해진 데이터 공간이다. 한번 정해지면 바꿀 수 없다.
  • 0부터 시작하며 이를 index라고 부른다.
  • 배열은 원소를 중간에 삽입/삭제 하려면 모든 원소를 다 옮겨야 한다.
    최악의 경우 배열길이 만큼 옮겨야되므로 시간복잡도가 오진다.
  • 원소 새로 추가하려면 새로운 공간 할당해야 하므로 매우 비효율적.

링크드 리스트

화물차 생각

  • 연결고리로 이어져있어서 이어주거나 빼주면 됨.
  • 특정 원소 접근하려면 연결고리 따라 탐색해야됨. 최악의 경우 맨 앞까지 가야됨.
  • 연결고리는 포인터라고 부르고 , 그 각자의 칸들을 노드라고 부름.
  • 리스트 원소 중간 삽입/삭제 하기 위해 앞뒤 포인터만 변경하면 됨.


클래스

  • 클래스는 분류, 집합 같은 것으로 객체를 총칭하는 개념이다.

  • 객체는 세상에 존재하는 사물들...

  • 예를들면 클래스가 사람이라면 객체는 유재석, 강호동
    동물이라면 강아지, 고양이, 등등...

  • 같은 속성과 기능을 가진 객체들을 묶어서 정의할수 있음.

  • 파이썬에서 생성자 함수의 이름은 무조건 init 으로 고정되어 있다.

  • 생성자는 생성시에 호출되는 함수이므로 아래처럼 Person 을 생성하기만 해도 hihihi 와 self 가 동시에 출력된다.

  • self 는 객체 자기 자신을 가리킨다.
    따라서, 파라미터를 따로 넣을 필요없이 그냥 호출하면 알아서 self에 자기자신을 넣어준다.

class Person:
    def __init__(self):
        print("hihihi", self)


person_1 = Person()  # hihihi <__main__.Person object at 0x1067e6d60> 이 출력됩니다!

person_2 = Person()  # hihihi <__main__.Person object at 0x106851550> 이 출력됩니다!
class Person:
    def __init__(self, param_name):
				print("hihihi", self)
        self.name = param_name


person_1 = Person("유재석")  # hihihi <__main__.Person object at 0x1067e6d60> 이 출력됩니다!
print(person_1.name)  # 유재석

person_2 = Person("박명수")  # # hihihi <__main__.Person object at 0x106851550> 이 출력됩니다!
print(person_2.name)  # 박명수



self 를 사용해서 객체에 데이터를 쌓을 수가 있다.
self.name 에 param_name 을 저장해두겠다는 건
그 객체의 name 이라는 변수에 저장된다는 의미!
class Person:
    def __init__(self, param_name):
        print("hihihi", self)
        self.name = param_name

    def talk(self):
        print("안녕하세요 저는", self.name, "입니다")


person_1 = Person("유재석")  # hihihi <__main__.Person object at 0x1067e6d60> 이 출력됩니다!
print(person_1.name)  # 유재석
person_1.talk()  # 안녕하세요 저는 유재석 입니다

person_2 = Person("박명수")  # # hihihi <__main__.Person object at 0x106851550> 이 출력됩니다!
print(person_2.name)  # 박명수
person_2.talk()  # 안녕하세요 저는 박명수 입니다



Person 이라는 클래스에 함수를 한 번 추가!

참고로, 클래스 내부의 함수는 메소드(method) 라고 부른다.
talk 라는 메소드를 만들어 보면,
각 객체의 변수를 사용해서 메소드를 구현할 수 있다.

이렇게 클래스 이용하면 연관성 있는 데이터들을 클래스 내에 관리할수 있으며
다양한 객체들을 쉽게 생성할 수 있게 된다.


profile
정말 최선을 다하겠습니다.

0개의 댓글