본문 바로가기

분류 전체보기

(45)
Queue(원형 큐 : Circular Queue) 이전 선형 큐 글에서 "선형큐를 Array 로 구현했을때, 상당히 비효율적이다" 라고 이야기 했었다. 원형 큐는 큐를 Array로 구현하되 Array로 구현했을때 일어나는 단점을 보완한 자료구조이다. front 와 rear 의 index 모두가 같은 인덱스를 가리키고 있다면, 해당 Circular Queue 는 비어있는 것이다. 데이터를 넣을 때 rear 인덱스 이동 데이터를 추가할 경우 1. front 는 정지해 있고, 2. rear 만 1칸씩 움직이면서, 데이터를 추가한다.(Enqueue) 데이터를 뺄때 front 인덱스 이동 데이터를 삭제할 경우 1. rear는 정지해 있고 2. front 는 1칸씩 이동하면서, 데이터를 추출한다.(Dequeue) 원형 큐(Circular Queue) 는 꽉 채울때..
Queue(선형 큐) 선입선출(First-In-First-Out : FIFO) : 먼저 들어간것이 먼저 나온다 Queue 이전에 배웠던, LinkedList로 구현한다. Queue 를 Array 로 개발하는 것은 상당히 비효율적이다.(특히 삭제시, 데이터를 1칸씩 앞으로 땡겨와야 한다.) => 다음 포스트에 나오겠지만, 원형 큐가 생겨나게 된 이유이다. offer : 삽입 (Enqueue) 1. 처음에 Dummy Head 와 Dummy Tail 이 한곳에 동시에 저장 되어 있다. 2. 데이터가 삽입이 이루어 지면서, Tail 노드를 뒤로 이동시킨다. poll : 추출 (Dequeue) 1. 데이터(result) 의 pointer 를 끊어낸다. = 제거 2. Head의 next pointer 를 재설정 한다. ⇒ 뒤에 쌓여 있..
Stack • 후입선출(Last-In-First-Out - LIFO) : 마지막에 들어간 것이 제일 빨리 나온다. push pop peek
Double LinkedList List 의 종류 (3가지) ArrayList LinkedList Single LinkedList Double LinkedList Double LinkedList 만의 특징 1. single 방식과 달리 double 은 Node 에 Preview point 가 있다. 각 Node가 서로를 가리키고 있다. 2. Dummy Head, Dummy tail 노드를 가지고 있다. - Double LinkedList 의 처음 생성 모습 (Head 와 Tail 만 존재한다) 실제로 데이터가 들어오게 되면 아래와 같은 모양이다. Double LinkedList 의 시간복잡도 추가 : add : O(1) Single 방식에서는 맨 끝에 데이터를 추가하기 위해서는 N번 만큼 이동한 뒤에 데이터를 추가 했어야 했다. 하지만..
Single LinkedList List 의 종류 (3가지) ArrayList LinkedList Single LinkedList Double LinkedList Single LinkedList Single LinkedList 를 보통 일반적인 LinkedList라고 부른다. LinkedList는 데이터가 따로 떨어져 저장되고, 1개의 저장공간 안에서 연속을 유지하기 위해 그다음 공간의 주소를 가지고 있게 된다. 위의 그림에서 파란 네모 공간을 링크드 리스트에서는 Node 라고 한다. Node는 데이터 공간 (오른쪽 상자) Next Node Point : 다음 연결 지점, 그다음 공간의 주소를 가지고 있음 (왼쪽 상자) 그림을 통한 이해 아래의 그림은 4개의 Node를 가지는 LinkedList 이다. 맨앞의 Node : Head 맨끝..
ArrayList List 의 종류 (3가지) 1. ArrayList 2. LinkedList 2-1 Single LinkedList 2-2 Double LinkedList ArrayList는 실제 메모리 공간 상(물리적 공간)에서도 연속적으로, 데이터가 할당된다.(Array 특성과 동일) ArrayList의 생성은 다음과 같은 구문들로 가능. ArrayList integers1 = new ArrayList(); // 타입 지정 ArrayList integers2 = new ArrayList(); // 타입 생략 가능 ArrayList integers3 = new ArrayList(10); // 초기 용량(Capacity) 설정 ArrayList integers4 = new ArrayList(integers1); // 다..
Array | 배열(Array) 이란? 선형 자료구조(Data Structure)중 하나로, 동일한 타입의 연관된 데이터를 메모리에 연속적으로 저장하여 하나의 변수에 묶어서 관리하기 위한 자료 구조 Java 에서는 ??개 크기의 배열 선언하겠다고 적어줘야 함. JS, Python 은 곧바로 선언. // Java 방식 String strArray = String[10]; // 10개 짜리 String 배열을 선언 // JS 방식 var jbAry = new Array(); // Py 방식 a = [] 그림을 통해 Array를 이해해 보자. Array를 생성하면 보통 선언된 크기만큼 [메모리 = RAM]에 할당 된다. (위의 그림에서 예시로 10개 설정함) Array에서 가장 중요한 핵심개념은 랜덤엑세스(Random ..
Unit Test 테스트 3종류Unit 테스트UI Widget 테스트Intergation 테스트 (통합 테스트)Unit Test메소드나 클래스처럼 작은 단위를 테스트할 때 쓰입니다.(내부테스트)Http 통신 IO , DB 접근하여 데이터 가져오는 행위를 테스트(외부테스트) : Mockito 테스트 프레임워크 사용 Mockito 테스트 프레임워크https://flutter-ko.dev/docs/cookbook/testing/unit/mocking Mockito를 사용하여 의존성들에 대해 mock 객체 생성하기어떠한 경우에는 단위 테스트가 웹 서비스나 데이터베이스로부터 데이터를 가져오는 역할을수행하는 특정 클래스에 의존하는 경우가 있습니다. 이럴 때는 다음과 같은 이유로 인해 테스트가flutter-ko.dev  기본적인 설정..