📚 Data Architect/Data Structure2023. 4. 13. 20:44Singly Linked List (단순 연결 리스트)

💡 LinkedList 포인터를 사용하여 여러 개의 노드를 연결하는 자료 구조 자료구조를 사용할때 항상 경계 조건을 생각하기 배열과의 차이점 배열도 순서대로 여러 데이터를 저장할때 사용한다는 공통점이 있지만 크기 조정이 어렵지만, LinkedList는 항상 맞는 크기로 만들어지도록 설계되어 많은양의 데이터나 순차적 데이터를 사용할때 적합함 LinkedList의 기본 구조 연결 리스트의 기본구조에는 노드가 있다 노드에는 두가지 정보가 들어있다 next - 다음 노드를 가리키는 포인터 data - 노드에 넣는 데이터를 가리키는 포인터 노드를 정의하는 법 public class LinkedList { private Node head; private int currentSize; /** currentSize 변..

📚 Data Architect/Data Structure2023. 4. 13. 20:41Iterator

💡 Iterator 자바의 컬렉션 프레임워크에서 컬렉션의 요소들을 읽어오는 방법을 표준화 하였는데 그 중 하나가 Iterator 이다. Iterator와 Iterable은 Collection의 상위 인터페이스이다. 상향된 for문을 쓰기위한 인터페이스 구현 Iterator의 구현 메서드 boolean hasNext() -> 다음 요소가 있다면 true 반환 E next() -> 포인터 void remove() void forEachRemaning(Consumer actions) Iterable의 구현 메서드 Iterator iterator() void forEach(Consumer actions) Spliterator spliterator() Iterator 인터페이스 hasNext() 임시포인터를 만들..

📚 Data Architect/Data Structure2023. 4. 13. 20:39Time Complexity (시간 복잡도 - Big O Notation)

💡 시간복잡도 서로 다른 알고리즘의 효율성을 비교할 때 사용 시간복잡도 효율순 : O(1) < O( 𝑙𝑜𝑔𝑛 ) < O(n) < O(n 𝑙𝑜𝑔𝑛 ) < O( 𝑛2 ) < O( 2𝑛 ) < O(n!) Big O 표기법이란? - O (빅 오 복잡도) : 비교 대상인 그래프가 일치 혹은 아래에 있을 때. 비교 대상인 다른 알고리즘과 같거나 더 빠르다. - θ (세타 복잡도) : 비교 대상인 그래프가 일치할 때. 비교 대상인 다른 알고리즘과 같다. - Ω (빅 오메가 복잡도) : 비교 대상인 그래프가 일치 혹은 위에 있을 때. 비교 대상인 다른 알고리즘과 같거나 느리다. - o (리틀 오 복잡도) : 비교 대상인 그래프가 아래에 있을 때. 비교 대상인 다른 알고리즘보다 더 빠르다. - ω (리틀 오메가 복잡도)..

📚 Data Architect/Data Structure2023. 4. 13. 20:29자료구조 기본 개념

💡 자료 구조 여러 데이터들의 묶음을 저장하고 사용하는 방법을 정의한 것 자료의 집합, 각 원소들 사이의 관계가 논리적 정의된 일정한 규칙에 의하여 나열되며, 자료처리의 효율성을 위해 조직&체계적으로 구분하여 표현한 것 (알고리즘 테스트 시 자주 등장하는 Stack,Queue,Tree,Graph 등) 자료구조의 경계 조건 자료 구조가 비어있는 경우 자료 구조에 단 하나의 요소가 들어있을 때 자료 구조의 첫 번째 요소를 제거하거나 추가할 때 자료 구조의 마지막 요소를 제거하거나 추가할 때 자료 구조의 중간 부분을 처리할 때 학습 포인트 각 자료구조가 가진 특징 각 자료구조를 사용하기 적합한 상황 판단 다른 구조와의 차이점을 이해하기 위해 자료구조 내부 직접구현 구현 시, 동작원리 이해하기 자료구조를 배워야..

📚 Data Architect/Design Pattern2023. 4. 12. 21:22Factory Method Pattern

💡 Factory Method Pattern Factory Method Pattern을 사용하는 이유 객체 간 결합도 ↓ (유지보수성 증가, 불필요한 클래스 의존성 제거) 객체의 생성 처리를 서브 클래스로 분리&처리하도록 캡슐화 하는 패턴 특정 조건에 따라 객체를 다르게 생성해야 할 경우 서브 클래스(팩토리 클래스)에 객체 생성 위임 객체 간 결합도란? 클래스에 변경이 생겼을때 다른 클래스에 미치는 영향 (의존성) Factory Method Pattern을 사용하지 않는 경우 팩토리 메서드 패턴을 사용하지 않는 아래 코드의 문제점 중복 코드의 발생 객체 간 결합도 ↑ /* ----------------팩토리 메서드 사용 X--------------- */ // abstract 클래스를 정의하여 캡슐화 p..

📚 Data Architect/Design Pattern2023. 4. 12. 12:51Static Factory Method Pattern

💡 Static Factory Method Pattern Static Factory Method Pattern의 장점 Constructor Chaning으로 발생될 문제 방지 이름 설정 가능 -> 반환될 객체의 특성을 더 자세하게 묘사 불필요한 객체 생성 방지 -> 만들어놓거나 새로 만든 객체를 캐싱하여 재활용하는 방식 사용 서브 클래스 반환 -> 반환할 객체의 클래스를 유연하게 선택 파라미터에 따라 매번 다른 타입의 객체 반환 반환할 객체 클래스(구현체)가 없어도 됨 Static Factory Method Pattern의 단점 Sub Classing의 어려움 Documentation 불명확한 API로 인해 개발자가 일일이 인스턴스화 할 방법을 찾아야함 Static Factory Method Patter..

📚 Data Architect/Design Pattern2023. 4. 12. 12:49Builder Pattern

💡 빌더 패턴 Builder Pattern을 사용하는 이유 필요한 데이터만 설정 가능 유연성 가독성 변경 가능성의 최소화 Builder Pattern을 사용 안했을때 생기는 문제점 Entity의 필드에 변경사항이 생길 때, 생성자 & 정적 팩토리 메소드의 파라미터 수정 작업 필요 가독성 ↓ 유연성 ↓ 불필요한 변경 가능성 최소화가 안됨으로 인한 Setter 메서드 사용 & 객체 불변성 확보에 불리함 Builder Pattern 사용 예시 아래 코드에서 Builder Pattern의 장점 필요에 따른 각각 다른 객체 생성 시, 객체 생성의 유연함 필요에 따른 Entity 필드의 추가 & 수정 작업 필요 시의 편리함 Entity의 원본 필드에 final을 추가함으로써 객체 불변성 확보 (Setter 사용 지..

image