링크드 리스트(Linked List)

  • 리스트(List)
  • 값(Value)과 '다음 노드를 가리키는 참조(Next)'를 가지고 있는 노드(Node)를 사용한 연결 리스트
  • 시간 복잡도
    • 삽입, 삭제(위치를 알 경우) : O(1)
    • 탐색 : O(n)

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,

완전 이진 트리(Complete Binary Tree)

  • 이진 트리(Binary Tree)
  • 마지막 계층을 제외한 모든 계층이 전부 채워져 있을 것
  • 마지막 계층은 왼쪽부터 채워져 있을 것

'Programming > Data Structure' 카테고리의 다른 글

링크드 리스트(Linked List)  (0) 2021.04.23
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,

리스트(List)

'Programming > Data Structure' 카테고리의 다른 글

링크드 리스트(Linked List)  (0) 2021.04.23
완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,

이진 트리(Binary Tree)

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
큐(Queue)  (0) 2021.04.19
블로그 이미지

RIsN

,

트리(Tree)

  • 트리 구조, 가지 치기 형식
  • 시간복잡도 : ?
  • 용어
    • 최상위 노드(Root Node)
    • 계층(Level)
    • 부모 노드(Parent Node)
    • 자식 노드(Child Node)
    • 잎새 노드(Leaf Node) : 자식 노드(Child Node)가 하나도 없는 노드
  • 최상위 노드(Root Node)를 시작으로,
    모든 노드(Node)들은 부모 노드(Parent Node)로써 자식 노드(Child Node)를 가진다.
  • 자식 노드의 개수를 2개로 제한하는 경우 이진 트리(Binary Tree)라고 한다.
  • 예 : 군대 계급제도

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
큐(Queue)  (0) 2021.04.19
블로그 이미지

RIsN

,

해쉬 테이블(Hash Table)

  • 키(Key)와 값(Value)을 갖는 구조
  • 시간 복잡도
    • 평균 : O(1)
  • 해쉬 충돌(Hash Collision) : 해쉬가 충돌하는 현상
    • 해결법 : 분리 연결법(Sperate Chaining)
      > 동일한 해쉬의 데이터에 대해 자료구조를 활용해 추가 메모리를 사용해, 다음 데이터의 주소를 저장하는 것
      > 예 : 동일한 해쉬(152)에 새로운 해쉬 테이블을 작성,
      그 테이블을 토대로 여러개의 값이 저장되게 하는 것으로 이해 중
  • C# Dictionary 등
  • 예 : 호텔의 키와 안의 고객 등

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
큐(Queue)  (0) 2021.04.19
블로그 이미지

RIsN

,

큐(Queue)

  • FIFO : First In First Out / 먼저 들어온 게 먼저 나간다
  • 시간 복잡도
    • 삽입, 삭제 : O(1)
    • 검색 : O(n)
  • 용어
    • Enqueue : 삽입
    • Dequeue : 삭제
    • Front : 앞, 삭제되는 곳
    • Rear : 뒤, 삽입되는 곳
  • 배열의 경우 원형 배열로 구현을 추천
    • 선형일 경우, 삭제해도 데이터가 계속 밀려나는 현상이 일어난다.
  • 아니면 연결 리스트를 사용해 구현
  • 예 : 은행의 번호표(Queue)

'Programming > Data Structure' 카테고리의 다른 글

완전 이진 트리(Complete Binary Tree)  (0) 2021.04.22
리스트(List)  (0) 2021.04.21
이진 트리(Binary Tree)  (0) 2021.04.20
트리(Tree)  (0) 2021.04.20
해쉬 테이블(Hash Table)  (0) 2021.04.20
블로그 이미지

RIsN

,
블로그 이미지

RIsN

,

: 입력, 한 줄(엔터까지엔터까지)을 읽어 온다.

1줄 받아오기

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.on('line', (input) => {
  console.log(`Received: ${input}`);
});

2줄 받아오기

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input.push(line);
    if(input.length >= 2)
        rl.close();
}).on('close', function () {
    console.log(input);
    process.exit();
});
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];
let count = 0;

rl.on('line', function (line) {
    input.push(line);
    
    // :: 입력 제한 관리
    count++;
    if(count >= 2)
        rl.close();
}).on('close', function () {
    console.log(input);
    process.exit();
});

>> 좀 더 직관적으로 만들어 본 코드 

블로그 이미지

RIsN

,

싱글톤 패턴이란?

: 최대한 용어를 안 쓰고 정리해보자

정의한 설계도(클래스, 함수)를
오직 1개(인스턴스)만 구현하게 하고
작업 전체에서 접근 가능(전역 변수)하도록 만든 것

아파트를 짓는데, 내부 인테리어 설계도(클래스, 함수)가 있다.
> 이 설계도는 아파트 내부에서 단 한 번만 쓰여야 한다.
> 하지만 누구나 이 제작된 내부 인테리어를 보고, 안에 있는 것을 건드리고 옮길 수 있다.
> 모델 하우스? 

왜 쓰면 안되는가?

(이해중) 전역 변수는 코드를 어지럽힌다.

  • 코드를 이해하기 어렵게 한다.
  • 커플링(의존) 문제

대체품

  • 하위 클래스 샌드박스 패턴
  • 서비스 중개자 패턴

왜 썼는가?

현재 제작중인 게임(Summerfield / Tamago)에서
> Zombie의 Status를 수정할 때 여러곳에서 필요로 하는 경우가 있었다.
>> 대체 예정

참고 서적 : 더 빠르고 깔끔한 게임 코드를 구현하는 13가지 디자인 패턴 게임 프로그래밍 패턴

'Programming > Pattern' 카테고리의 다른 글

관찰자 패턴(Observer Pattern) with Unity  (0) 2021.03.13
블로그 이미지

RIsN

,