전체 글 (54) 썸네일형 리스트형 [Design Pattern] 프로토타입 (Prototype) 패턴 1. 개요 프로토타입 디자인 패턴 (Prototype Design Pattern)은 기존 객체를 복제하여 새로운 객체를 생성하는 패턴이다. 2. 상황 객체 생성에 필요한 리소스나 시간이 많이 소요될 때 3. 다이어그램 3.1. 설명 Prototype 복제를 지원하는 인터페이스 또는 추상 클래스이다. 복제 메소드를 정의하고, 자기 자신을 복제하여 새로운 객체를 생성한다. ConcretePrototype Prototype 구현한 실제 객체이다. 자기 자신을 복제하여 새로운 객체를 생성하는 기능을 구현한다. 4. 구현 public interface Prototype { Prototype clone(); } public class ConcretePrototype implements Prototype { priv.. [Design Pattern] 옵저버 (Observer) 패턴 1. 개요옵저버 디자인 패턴(Observer Design Pattern)은 관찰자 observer 가 관찰대상 subject 이 상태변화가 있을 때마다 관찰자에게 알리고, 알림을 받은 관찰자가 행동하도록 하는 패턴이다.2. 상황한 개의 관찰 대상자 subject 가 여러개의 관찰자 observer 를 가질 때3. 다이어그램3.1. 설명SubjectObserver에 대한 등록, 해제, 알림 전송 등을 관리하는 역할을 수행한다.일반적으로 하나 이상의 Observer를 관리한다.상태가 변경될 때마다 등록된 모든 Observer에게 상태 변화를 알린다.ObserverSubject의 상태 변화에 대한 알림을 수신하고 처리하는 역할을 수행한다.Subject에서 발생한 알림을 받은 후 필요한 작업을 수행하거나 상태를.. [Design Pattern] 메멘토 (Memento) 패턴 1. 개요중재자 디자인 패턴 (Mediator Design Pattern)은 객체 간 복잡한 상호작용 부분을 따로 함축한 객체를 만드는 패턴이다.2. 조건여러 객체 간의 상호작용이 매우 복잡할 때3. 다이어그램3.1. 설명Mediator객체들 사이의 상호작용을 중재, 조정하는 인터페이스를 정의한다.다른 객체들과 통신하기 위한 인터페이스를 제공한다.객체들 간의 결합도를 낮추고, 객체들이 직접적으로 통신하지 않도록 한다.ConcreteMediatorMediator 인터페이스를 구현하여 객체들의 상호작용을 조정한다.객체들 간의 통신을 관리하고 중재한다.다른 객체들과의 통신을 위해 객체들 간의 관계를 알고 있어야 한다.ColleagueMediator와 통신하는 객체를 나타낸다.다른 동료 객체들과 직접적으로 통신.. [Baekjoon] 2839번 설탕 배달 B1 <Short> 2839번 - 설탕 배달 1. 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. Input 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) Output 상근이가 배달하.. [Algorithm] 색인 순차 탐색 (Indexed Sequential Search) 1. 개요색인 순차 탐색 은 순차 탐색 의 발전 형태로, 색인 배열 (Indexed Array) 의 형태의 구조로 저장된 자료에 대해 탐색하는 방식을 의미한다. 해당 방식은 완전 탐색이 이루어지지 않으므로 브루트 포스 의 범주에서 벗어난다.2. 의의순차 탐색 을 개선한 방식으로 더 효율적인 탐색이 가능하다는 의의가 있다.3. 조건색인 순차 탐색의 조건정렬된 배열추가 메모리 공간 (색인 배열)4. 구현색인 순차 탐색 알고리즘은 반드시 배열이 정렬되어 있어야 하며, 색인 배열을 활용할 추가적인 메모리 공간이 있어야 한다.구현 절차는 다음을 따른다.색인 순차 탐색의 절차색인 배열 크기 설정색인 배열 값 설정색인 배열에서 확인된 범위에 따른 배열 일부 탐색먼저 다음을 정의한다.배열: $A$색인 배열: $I$배열.. [Algorithm] 순차 탐색 (Sequential Search) 1. 개요순차 탐색 (Sequential Search) 은 선형 탐색 (Linear Search) 그 자체이며, 배열과 같은 선형 구조에 대해 탐색하는 방식을 의미한다.자료 구조 전체에 대한 탐색이 이루어지므로 완전 탐색 (Brute Force) 의 한 종류라고 할 수 있다.2. 의의순차 탐색 알고리즘은 구현이 용이하다. 항상 효율적이라고는 할 수 없지만, 쉽게 구현할 수 있다는 점에서 의의가 있다. 또한, 선형 구조의 정렬 여부와 관계 없이 사용 가능하다는 장점이 있다.3. 조건순차 탐색 역시 완전 탐색 이므로 완전 탐색의 조건을 따른다.4. 구현순차 탐색 알고리즘은 선형 자료 구조를 그 길이 만큼 모두 탐색하기 때문에 보통 반복문을 사용하여 구현된다.다음의 예시를 보자.5. 예시) 배열에서 값의 위치.. [Algorithm] 탐색 (Search) 1. 개요탐색 (Search) 알고리즘은 한 개 이상의 자료들 사이에서 특정 자료를 색출하는데 사용하는 방식을 의미한다. 자료가 저장된 형식에 따라 쓰이는 탐색 알고리즘 은 달라진다. 이 포스팅에서는 탐색 알고리즘 의 종류와, 각각의 알고리즘이 어떠한 상황에서 사용되는지에 대해 살펴보고자 한다.2. 종류다음 모두 탐색 알고리즘 이라고 할 수 있다. 위 탐색 알고리즘을 선택하여 해당 포스팅으로 이동할 수 있다. [Python] 논리 연산에 대한 고찰 1. 개요대부분의 언어는 같은 형식의 데이터끼리만 논리 연산을 할 수 있다. 하지만 Python 은 형식이 달라도 논리 연산이 가능하다는 특징이 있다. 이 포스팅에서는 Python 의 논리 연산자 (Logical Operator) and, or, not 이 어떻게 동작하는지에 대해 자세히 살펴보고자 한다.2. 비 Python 의 논리 연산대부분의 언어는 논리 연산자로 &&, ||, ! 를 사용한다.&& : 논리곱 (and)|| : 논리합 (or)! : 부정 (not)위 세 연산자(Operator)와 편의상 A (왼쪽) 와 B (오른쪽) 의 피연산자(Operand)를 사용한 다음과 같은 식의 연산값에 대해 살펴보도록 하자.A && BA || B!A기본적으로 위 연산의 결과값은 bool 형식을 나타내며, 다.. 이전 1 2 3 4 5 6 7 다음