분류 전체보기
-
그래프카테고리 없음 2021. 5. 24. 17:40
노드와 노드 간 연결(edge)로 구성된 자료 구조이며, object 간의 관계를 표현할 때 유용하게 사용할 수 있다. 트리와는 다르게 계층 구조가 아니며, 루프를 형성할 수 있다. 유형 1. directed(방향성) / undirected(무방향성) directed - 단방향 혹은 양방향 edge로 구성되어있으며, 순서가 있고, 마지막 노드(leaf)가 있다. undirected - 모든 edge 가 상호교환이면 방향이 의미가 없으므로, 무방향성 그래프가 된다. 2. cyclic(순환) / acyclic(비순환) cyclic(순환) - 방문한 노드에 다시 방문하는 것 *undirected 그래프는 항상 동일한 노드에 재방문이 가능하기 때문에 cyclic graph이다. acyclic - edge의 방향..
-
Hash Table카테고리 없음 2021. 5. 22. 15:45
Hash Table key를 이용하여 value에 직접 접근이 가능한 자료구조 key를 통해 value을 검색하기 위한 목적으로 만들어졌으며, 데이터 양에 영향을 덜 받으며 빠르다 *python의 dictionary가 해시테이블 구조로 생성된 collection 자료형이다. Hash Table 구성 key : 고유한 값이며, 해시함수의 input. 해시함수를 통과해 hash로 바뀐다. *hash로 바꾸는 이유 : 기본적으로 컴퓨터가 숫자 형태로 데이터를 받아들이기도 하고, 길이가 긴 형태의 key값도 hash로 바꾸어 공간의 효율성을 추구할 수 있다. 해시함수(Hash Function) : key를 hash로 바꾸는 방법을 정의하고 있으며, 이때 일어나는 연산을 모듈러 연산이라고 한다. Hash : 해시..
-
python property 활용카테고리 없음 2021. 5. 19. 22:22
getter : 값을 가져오는 method setter : 값을 저장하는 method 예) class A: def __init__(self): self.__num = 0 def get_value(self): # getter return self.__num def set_value(self, num): # setter self.__num = num a = A() a.set_value(3) print(a.get_value()) property를 활용하면 getter와 setter를 간단히 구현할 수 있다. # case 1 : 내장함수 사용 property() class A: def __init__(self): self._num = 0 def _get_value(self): # getter return sel..
-
python object 접근제어카테고리 없음 2021. 5. 19. 11:03
Public : name : object 외부에서 접근 허용 Protected : _name : object 외부에서 접근은 가능하나 권장하지 않음 Private : __name : object 외부에서 접근 불가 *_ClassName__PrivateName 의 형태로 private 변수에 접근 가능, 부모클래스와 서브클래스 내 변수 구별 class A : def __init__(self): self.public_name = 'public' self._protected_name = 'protected' self.__private_name = 'private' def print_vars(self): print(self.__private_name) a = A() print(a.public_name) #출력 ..
-
[python]함수에서 변수 수정 후 반환 안되는 오류 해결카테고리 없음 2021. 5. 17. 23:06
처음에 작성했던 코드는 대략 아래와 같았다. def A(num_list, dir) : if not dir: dir = {num:[] for num in num_list} for num in num_list : dir[num] = [n for n in range(num)] if __name__ == "__main__": res = {} A([1, 2, 3], res) print(res) 위 코드는 예시이고, 재귀를 사용해서 좀 더 복잡한 형태였다. 그런데 여기서 res를 출력했더니 빈 dictionary를 출력한다. 내 생각대로라면 dir에 새로운 내용이 추가되었으니 변경된 dictionary가 출력되어야 했다. 그리고 하나하나 찬찬히 보다가, 함수 내에서 dictionary를 새로 생성해 준 것이 문제인..
-
OOP(Object Oriented Programming)카테고리 없음 2021. 5. 16. 15:28
oop(객체지향 프로그래밍) 이전에 사용해오던 프로그래밍 방식은 procedural programming(절차지향 프로그래밍)이다. procedural programming은 코드를 작성할 때, 실행하고자 하는 순서대로 코드를 촤라락 작성하는 방법이다. 반면 oop는 구현하고자 하는 기능들을 따로따로 작성해놓고, 필요할때 object(객체)로 불러와 사용하는 방법이라고 이해했다. 일반적으로 교수들은 붕어빵으로 비유하고, 현업에서는 '실체가 있는 것'을 구현하는 것이라 설명한다고 한다. oop가 없으면 사람 1, 사람 2, 사람 3 이라는 변수를 설정할 때 마다 변수를 새로 만들어야하고, 만약 [이름, 나이]로만 변수를 생성하다가, 어느 순간 [이름, 나이, 성별] 이렇게 데이터의 형태를 바꾸려고 하면 하..