[Design Pattern] Strategy
·
Reference/Design Pattern
📕 목차 1. Strategy Pattern 2. 예시 코드 1. Strategy Pattern 📌 전략 패턴 정책 패턴(policy pattern)이라고도 한다. 실행(런타임) 중에 객체의 행위를 바꾸는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체하는 패턴 전략이란 일종의 알고리즘이며, 특정 목표를 수행하기 위한 기능이나 동작 계획을 말한다. 어떤 일을 수행하는 알고리즘이 여러가지 일 때, 변형이 빈번하게 필요한 경우 적합하다. 결제 방법은 네이버 페이, 카카오 페이 등 다양한 방법이 존재한다. OAuth 인증 방법은 네이버, 카카오, 구글, 애플 등 다양한 방법이 존재한다. 구조 클라이언트: 특정 전략 객체를 Context에 전달하여, 전략을 등록하거나 전략 알고리즘 실행 결과를 받는다...
[Design Pattern] Factory
·
Reference/Design Pattern
"헤더퍼스트 디자인패턴" + "면접을 위한 CS 전공 지식 노트"에 개인적인 의견과 생각들을 추가하여 작성한 포스팅이므로 틀린 내용이 있을 수 있습니다. (있다면 지적 부탁 드립니다.) 📕 목차 1. Legacy Client 2. Simple Factory 3. Factory Method Pattern 4. Dependency Injection 5. Dependency Inversion Principle 6. Abstract Factory Pattern 1. Legacy Client 📌 클라이언트가 피자 주문하기 public class LegacyPizzaStore { public Pizza orderPizza(String type) { Pizza pizza = null; if (type.equals("..
[Design Pattern] Singleton
·
Reference/Design Pattern
"헤더퍼스트 디자인패턴" + "면접을 위한 CS 전공 지식 노트"에 개인적인 의견과 생각들을 추가하여 작성한 포스팅이므로 틀린 내용이 있을 수 있습니다. (있다면 지적 부탁 드립니다.) 📕 목차 1. 리틀 싱글턴 2. 싱글턴 패턴 3. 싱글턴 패턴 구현 전략 1. 리틀 싱글턴 📌 The Little Lisper 클래스의 인스턴스를 생성하기 위해서는 일반적으로 다음과 같이 new 연산자를 사용한다. new Foo(); 다른 객체에서 또 Foo라는 클래스의 인스턴스가 필요하면, 또 new 연산자를 사용해 인스턴스를 생성하면 된다. 그런데 만약, Foo 클래스의 생성자를 private로 바꾼다면 어떻게 될까? class Foo() { private Foo() {} } 이렇게 되면 Foo 클래스 내부에서만 생성..
[Algorithm Strategies] 3-10. 탐욕법
·
Reference/알고리즘 문제 해결 전략
구종만님의 "프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략"을 기반으로 공부한 내용입니다. 📕 목차 1. 도입 2. 도시락 데우기 (문제 ID: LUNCHBOX, 난이도: 하) 3. 문자열 합치기 (문제 ID: STRJOIN, 난이도: 중) 4. 미나스 아노르 (문제 ID: MINASTIRITH, 난이도: 상) 1. 도입 • 탐욕적 알고리즘 • 예제: 회의실 예약 • 예제: 출전 순서 정하기 (문제 ID: MATCHORDER, 난이도: 하) • 탐욕적 알고리즘 레시피 📌 탐욕법(Greedy Method) 완전 탐색과 동적 계획법 알고리즘과 동일하게 여러 개의 조각으로 쪼개고, 각 단계마다 답의 한 부분을 만들어간다. 하지만 결정적 차이는 모든 선택지를 고려하고 가장 좋은 답을 찾는 것이 아니라, 각..