전체 글 (470) 썸네일형 리스트형 [생성 패턴] 추상 팩토리 (Abstract Factory) 추상 팩토리 패턴(Abstract Factory Pattern)추상 팩토리 패턴은 생성 디자인 패턴(Creational Design Pattern) 중 하나로, 관련된 객체들의 가족(family)을 생성하는 데 사용됩니다.이 패턴은 객체 생성 코드를 캡슐화하고, 구체적인 클래스에 의존하지 않도록 설계하는 데 초점이 맞춰져 있습니다. 추상 팩토리 패턴 특징관련 객체 생성: 서로 관련된 객체를 묶어서 생성하는 데 적합함구체 클래스 의존 제거: 인터페이스나 추상 클래스를 사용하여 객체를 생성함으로써 코드의 유연성과 확장성 높임객체군(Family of objects) 생성: 동일한 제품군의 객체들을 일관성 있게 생성확장성: 새로운 객체군을 추가할 때 기존 코드를 수정하지 않고 확장이 가능 추상 팩토리 패턴 구.. [생성 패턴] 빌더 패턴 (Builder Pattern) Builder Pattern이란?생성 디자인 패턴(Creational Design Pattern) 중 하나로, 복잡한 객체 생성을 단계적으로 수행할 수 있도록 돕는 패턴입니다.클래스가 많은 매개변수를 가지는 경우 객체 생성의 복잡성을 줄이고, 코드의 가독성을 높이는 데 유용합니다.여러 개의 생성자(다양한 매개변수 조합)를 작성하는 번거로움을 해소하며, 유연성과 확장성을 제공합니다. Builder Pattern의 특징유연한 객체 생성: 불필요한 생성자 오버로딩을 줄이고 원하는 값만 설정 가능.가독성: 객체 생성 시 어떤 값을 설정하는지 명확히 알 수 있음.불변성 유지: Builder를 통해 객체를 생성하면, 생성된 객체는 변경 불가능(immutable)하게 유지 가능.확장성: 새로운 필드 추가 시 기존 코.. [Java] SinglyLinkedList 구현 LinkedList란?LinkedList는 배열과 달리 데이터를 저장하는 선형 자료구조입니다. 각 요소(노드)는 데이터와 다음 노드를 가리키는 포인터(주소)를 포함하고 있으며, 자바의 LinkedList는 이중 연결 리스트(doubly linked list)로 구현되어 각 노드가 이전 노드와 다음 노드의 주소를 모두 저장합니다.노드들은 동적으로 메모리가 할당되며, 연속적인 메모리 주소를 가지지 않습니다. LinkedList의 특징동적 크기 조절LinkedList는 배열과 달리 크기를 미리 지정할 필요가 없습니다. 노드가 추가되거나 삭제될 때 메모리를 동적으로 할당하거나 해제합니다.순차적 접근각 노드는 연결된 다음 노드의 주소를 통해 접근하기 때문에, 특정 위치의 데이터를 찾으려면 시작 노드부터 순차적으로.. [백준] 수 묶기(1744번) 문제 힌트1. 자료구조음수, 양수 리스트음수는 음수끼리 양수는 양수끼리 곱을 하여 관리하기 위해 자료구조 분리이유 : 음수의 갯수가 홀수 일 때 관리의 번거로움이 생김Collections.sort()리스트에 값을 전부 저장하고 정렬하기이유: 1 2 3 4 5가 주어졌을 때 가장 큰 수는 5*4 + 3*2 + 1이 가장 높은 수 이기 때문boolean zeroFlag0이 있는지 여부를 저장이유 : 0은 사용하지 않는 음수가 있을 때 곱을 하여 해당 음수를 0으로 만들어 가장 큰 수로 만들 수 있음0이 2개 이상일 경우 몇 개가 있어도 의미가 없는 숫자이기 때문에 boolean으로 관리 2. 핵심 아이디어리스트를 사용한 정렬 및 분류음수와 양수를 분리하여 정렬하고 각각 계산하므로, 구조가 간단하면서도 효율적.. [Java] 객체 null 체크 Objects.isNull(), obj == null 스프링 강의를 보던 중 Objects.isNull()을 사용하여 null을 체크하는 것을 보고 뭔지 싶어서 정리를 했습니다. Objects.isNull()이란?해당 객체의 값이 null인지 확인하고 null이면 true를 null이 아니면 false를 반환합니다.public class Main { public static void main(String[] args) throws IOException { Integer n1 = null; Integer n2 = 10; System.out.println(Objects.isNull(n1)); System.out.println(Objects.isNull(n2)); }} obj == null 과 차.. [정보처리산업기사] 객체 지향 설계 원칙 SOLID 객체 지향 설계 원칙시스템 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 5가지 원칙입니다.앞 글자를 따 SOLID 원칙이라고도 불립니다. 1. 단일 책임 원칙(Single Responsibility Principle, SRP)클래스는 하나의 책임만 가져야 한다.응집도는 높고 결합도는 낮게 설계해야 한다.A클래스와 B클래스가 서로 의존적일 때 A클래스가 변경이 된다면 B클래스 또한 변경이 됩니다.시스템 변경이 되었어도 A클래스만 변경이 되어야 하는 것이 SRP입니다. 2. 개방-폐쇄 원칙(Open-Closed Principle)확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다.기존 코드를 변경하지 않고 기능을 추가할 수 있도록 설계를 해야하며 공통 인터페이스를 하나의 인터페이스로 묶어 캡.. [정보처리산업기사] 운영체제 운영체제란?컴퓨터 시스템들의 자원들을 관리해주고 사용자에게 편리하고 효과적인 환경을 제공하는 여러 프로그램들의 모임입니다.대표적인 운영체제는 윈도우이며 리눅스, 유닉스 등 다양한 운영체제가 있습니다.여기서의 자원은 하드웨어(프로세서, 기억장치, 입출력장치 등)와 소프트웨어(데이터, 명령어)를 의미합니다. 운영체제는 사용자와 하드웨어간의 인터페이스로서 동작을 하는 시스템 소프트웨어입니다.만약 컴퓨터에 운영체제가 없다면 사람이 하나하나 전선을 연결하며 코드를 짜야합니다. 운영체제의 목적처리 능력(Throughput)일정 시간 내에 시스템이 처리하는 일의 양반환 시간(Turn Around Time)작업이 처리가 완료될 때까지 걸린 시간사용 가능도(Availability)시스템을 사용할 필요가 있을 때 즉시 사.. [백준] 알고리즘 수업 - 깊이 우선 탐색 2 (24480번) 문제 힌트1. 자료구조List[] (그래프 표현)정점 간의 간선을 표현하기 위해 인접 리스트를 사용합니다.이유: 정점과 간선의 수가 크기 때문에 인접 행렬을 사용하면 공간 복잡도가 매우 비효율적입니다. 인접 리스트를 통해 필요한 간선 정보만 저장해 메모리를 절약할 수 있습니다.int[] (방문 순서 기록)방문 순서를 저장하기 위해 배열을 사용합니다.이유: 정점 번호와 배열의 인덱스를 매칭하여 빠르게 방문 순서를 기록할 수 있습니다. 배열을 통해 O(1) 시간에 순서를 조회하거나 설정할 수 있습니다.Collections.sort (내림차순 정렬)문제에서 요구하는 인접 정점을 내림차순으로 방문을 구현하기 위해 사용합니다.이유: 탐색 전에 인접 리스트를 내림차순으로 정렬함으로써 DFS 수행 중 자연스럽게 내림.. 이전 1 2 3 4 5 6 7 8 ··· 59 다음