자료구조

    [Java] Collection Framework (자료구조 종류)

    Java Collection Framework (JCF) 컬렉션은 기본 데이터형이 아닌 참조 데이터형만 저장이 가능하다 따라서 Collection에서의 데이터는 Object 타입의 객체로서 저장이 된다.기본 데이터 형은 Wrapper 클래스를 이용하여 Boxing 시켜주거나 Integer num = new Integer(5) 기본 데이터형인 5를 Wrapper 클래스의 Integer 타입 객체로 변환 autoboxing으로 저장할 수 있다 즉 오토박싱을 통해 기본 데이터형 컬렉션에 직접 대입하여 저장해도 컴파일러가 자동으로 Wrapper 클래스로 변환해준다 collection.add(11) 저장된 값을 얻어올 때에도 객체화된 데이터를 기본 데이터형으로 바로 얻어올 수 있는데 이 경우는 unboxing이다..

    [C++] 삼항 트리를 이중 연결된 목록으로 변환

    삼항 트리가 주어지면, 제자리에서 이중 연결된 목록으로 변환한다. 삼항 트리는 각 노드가 왼쪽, 중간, 오른쪽으로 구분되는 세 개의 자식 노드를 갖는 트리 데이터 구조다. 변환은 삼항 트리 노드의 왼쪽 자식 포인터가 이중 연결된 목록 노드의 이전 포인터 역할을 하고 오른쪽 자식 포인터가 이중 연결된 목록 노드의 다음 포인터 역할을 하고 중간 트리 노드가 자식 포인터는 아무 것도 가리키지 않아야 한다. 변환은 이중 연결된 목록의 노드에 추가 메모리를 할당하지 않고 삼항 트리 노드 포인터만 교환하여 수행해야 한다. Input: Ternary Tree 1 / | \ / | \ / | \ 2 9 12 / | \ / \ | \ 3 6 8 10 11 13 16 | \ / \ | 4 7 14 15 17 \ 5 Out..

    [Unreal] 자료구조 순회 방법

    TMap 변수명; Key = 키, Value = 값 범위 기반 for문 사용 구현, . 멤버 변수 접근자 사용 예) 변수명.Key, 변수명.Value for (auto 변수명 : TMap 변수명) { } 이터레이터 사용 구현, it-> 화살표 연산자 참조 또는 (*it) 역참조로 접근 예) it->Key, (*it).Value 주의) TConstIterator 형이지만 != 연산자는 nullptr과 비교 불가다. ++ 연산자는 파라미터를 봐서는 전위 연산자인데 후위 연산자는 복사 오버헤드로 인해 막아놓은듯 하다. for (auto it = TMap 변수명.CreateConstIterator(); it; ++it) { }

    [C++] Deque 데크

    데큐는 double-ended queue의 약어이다. 즉, 양방향으로 입출력이 가능한 큐이다. (큐는 한쪽방향으로만 입력이 가능하고 반대방향으로 출력이 가능하다). #include #include using namespace std; int main() { deque dq; for(int i = 1; i

    선형(Linear) / 비선형(Non Linear) 자료구조

    선형 자료구조 (Linear) 선형 자료구조란 하나의 자료 뒤에 하나의 자료가 존재하는 것이다. 자료들 간의 앞뒤 관계가 1:1의 선형관계 배열과 리스트가 대표적이고 더 나아가서 스택, 큐도 이에 해당된다. 비선형 자료구조 (NonLinear) 비선형 자료구조란 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것이다. 자료들 간의 앞뒤 관계가 1:n, 또는 n:n 의 관계 트리와 그래프가 대표적이며 계층적 구조를 나타내기에 적절하다. 정리 출처 : https://goodgid.github.io/DS-Linear-and-NonLinear/

    그래프 개념

    다음 두 가지 요소로 구성된다. Vertex의 집합 Edge의 집합 여기서 Vertex는 "어떤 대상의 객체"를 의미하고, Edge는 "Vertex간의 관계"를 뜻한다. 그래프는 Vertex와 Edge의 set으로 정의되며, 구성된다고 볼 수 있다. Graph와 관련된 용어정리 Graph와 관련되서 알고 있어야할 용어의 종류는 다음과 같다. Vertex : 실세계에서의 어떤 대상을 표현하는 객체 문헌에 따라서 Vertex를 "node"라고 표현하기도 함. Edge : 두 Vertex간에 관계가 존재하는 경우 Edge가 존재한다. 문헌에 따라서 Edge를 "arc"라고 표현하기도 한다. Adjacent : 두 Vertex 간에 Edge가 존재함을 의미 Path : 두 Vertex간에 Edge로서 연결되는 ..

    C++ STL 설명과 for-range 기반 loop

    STL(Standard Template Library)은 C++ 내 템플릿 클래스들의 집합이며, 개발자에게 도움줄 수많은 자료구조와 함수들이 구현 되어있다. 기본 4가지로 구성 되어있다. 알고리즘 헤더 파일 내 (정렬, 탐색 컨테이너 (선형,비선형 자료구조) 예) , 함수 이터레이터 (반복자) 모든 컨테이너들은 이를 지원하지 않음. STL은 기본적으로 범위 기반 for문을 돌려 원소에 접근할 수가 있다. 핵심은 4번에 있다, 이를 실행할 수 있는 조건이 바로 .begin() 함수다 즉 첫 원소의 주소를 이터레이터 형태로 반환하는 함수다. 예) for(auto item : 컨테이너 이름) 여기서 한 가지 의문점이 들 수도 있는데 const auto : const auto& : auto : auto& : 위..