Adventure Time - Jake bogyoi's Dev note
본문 바로가기

전체 글90

이진탐색트리(Binary search tree,BST)의 시간복잡도 이진 탐색 트리 : 왼쪽자식은 root보다 항상 값이 적고, 오른쪽은 큰 값이 들어가게 되는 순서를 만족하는 것. 한번 입력이 되게 되면 자리를 바꾸지 않음. 주로 데이터 검색에 사용하며 탐색 속도를 개선할 수 있음. 그러나 맨 첫번째 항목이 어떤 항목이 삽입되느냐에 따라 이진탐색트리는 한쪽으로 쏠리는 불균형 현상이 일어날 수 있음. 지금 현재있는 것과 비교해서 왼쪽으로갈지 오른쪽으로 갈지 정함.(완전이진트리처럼 왼쪽부터 채우지 x) 그래서 최악의 경우 복잡도를 고려해 균형화 작업을 하는 것이 좋다. 균형화 : height difference의 절댓값이 1이하이도록 작업하는 것. 항목 균형화하지 않을 때 균형화할 때 탐색(search) -평균: O(log N) -최대: N/2 =>O(N) -평균: O(l.. 2024. 1. 11.
C++ 상속 멤버함수 상속되지않는 멤버함수 -생성자 -소멸자 :자식 클래스의 소멸자 호출되면 자동으로 부모 클래스의 소멸자가 호출. 명시적 호출이 필요없음. 따라서 자식 클래스의 소멸자는 자식클래스에서 정의된 변수에 대해서만 delete 수행 /* 정의하지않으면 디폴트 버전 생성됨 */ -복제 생성자 //포인터와 동적메모리 생성 기능이 사용되면 별도로 구현해야함 -대입 연산자 상속되는 멤버함수 -그 외 모두 생성자와 소멸자, 대입 연산자는 특정 클래스에 완전히 종속적이며 해당 클래스의 멤버에 대해서만 동작하기 때문에 자식 클래스는 이 함수들을 직접 사용할 필요가 없음. (대신 초기화 리스트에서는 호출 가능) 부모클래스의 클래스이름 :: 해당되는 생성자; 2024. 1. 8.
접근 지정자 protected 와 private의 차이점 private 상속 : 자식클래스는 부모클래스의 private member을 모두 상속받지만, 이를 접근하기 위해선 부모클래스의 public interface멤버 함수를 통해서만 접근이 가능하다. class Student: private Person { ... } -> 부모 클래스의 모든 멤버는 자식 클래스에서 private 멤버로 변경됨 protected 상속 : 자식/자손 일 경우 접근 가능하게 함.(제한적 허용) 구현에서 간편함과 편리함을 위해 자식클래스에만 제한적으로 허용함. 상속관계가 아닌 다른 클래스에서는 private처럼 관리.(직접접근x). 정보 은닉 규칙을 파괴한다는 의견도 있음. class Student: protected Person { ... } -> 부모 클래스의 public 멤버.. 2024. 1. 5.
call-by-pointer(return-by-pointer) vs call-by-reference 함수의 호출과 반환에서 포인터를 이용한 인수 전달 방법에 call-by-pointer(return-by-pointer)을 사용할 수 있다. 함수 호출 시 인수값을 복사하지않고, 인수가 저장된 곳의 주소(정보)를 전달하기 때문에 시간 부담이 적으며 메모리 공간 사용도 효율적임. 호출된 함수에서는 포인터를 사용하여 간접참조로 인수 내용을 직접 변경할 수 있음. call-by-reference(return-by-reference)방식의 경우 변수 이름을 직접 사용할 수 있어 &나 *와 같은 연산자를 별도로 사용하지 않아도 되는 장점이 있다. ( &: 변수나 함수의 주소를 찾아낼 때 사용, *: 포인터가 가리키고 있는 곳의 값을 읽거나 쓸 때 사용) /// call-by-pointer(return by valu.. 2024. 1. 3.
js의 변수 선언 방법(var, let, const)와 var, let의 차이 | 호이스팅|TDZ js에서 변수를 선언하는 방법에는 세가지가 있다. ( const, var, let) const는 변수값을 고정시키고 싶을 때 사용한다.(값을 수정하려고 하면 error가 난다. ) C를 배웠다면 알다시피 C언어에도 const가 있다. 물론 추가적으로 #define이나 enum도 있겠다. C언어에서의 const와 js에서의 const는 의미 면에서는 비슷한 듯하다. 대개 읽기만 하는 값(read-only)이나 절대 변하면 안되는 값을 const로 선언하는 편. 참고로 const는 초기값 없이는 선언이 불가하다. var: 선언 시 메모리에 담아둔다. (함수가 실행되기 전에 메모리에 담아뒀던 변수들을 스코프 범위(scope:변수가 적용되는 범위)의 최상단으로 끌어올린다.) 이런걸 호이스팅(hoisting)이라.. 2024. 1. 3.
캡슐화란? 캡슐화의 장점 - 데이터 추상화, 정보 보호, 정보 은닉 캡슐화란? -데이터와 데이터를 처리하는 멤버 함수를 함께 포함하는 캡슐로 만들어 사용 -멤버함수는 데이터가 항상 정상적인 범위 내에서 유지될 수 있도록 관리 멤버 데이터 : 속성,값. 사용자 정보를 포함, 각 데이터에는 정상적인 범위가 지정되어있음. 멤버 함수: 데이터를 처리하는 기능을 구현. Private: 내부적으로 사용(내부적으로 보호가 되면서 사용가능). 멤버 함수에게만 직접 접근이 허용됨. 클래스 외부에서 private 데이터를 사용하기 위해선 public으로 공개된 인터페이스를 거쳐야함. Public: 외부적으로 사용할수 있게 허용(외부로 공개된 멤버) Friend :클래스의 함수는 아니지만 클래스 안에 있는 정보들을 자기가 직접 접속할 수 있게 허용해주는 것. 시스템이 정의한 객체들만 사용할.. 2024. 1. 1.