Java
-
-
Factory PatternJava/디자인패턴 2024. 1. 17. 11:10
🤔 인터페이스를 사용한다고 해도 구상 클래스의 인스턴스를 만들어야 하지 않나? Duck duck = new MallardDuck(); // Duck이라는 인터페이스를 써서 유연하게 만들려고 해도, 그럼에도 구상 클래스의 인스턴스를 만들어야 한다. Duck duck; if (picnic) { duck = new MallardDuck(); } else if (hunting) { duck = new DecoyDuck(); } else if (inBathTub) { duck = new RubberDuck(); } 이 코드를 보면 구상 클래스의 인스턴스가 여러 개 있고, 그 인스턴스의 형식은 실행 시 조건에 따라 결정된다. 변경하거나 확장할 때, 코드를 다시 확인하고 새롭게 추가하거나 기존 코드 제거 => 관리와..
-
-
Decorator PatternJava/디자인패턴 2024. 1. 11. 17:39
🍦 Decorator Pattern 객체에 추가 요소를 동적으로 더할 수 있는 디자인 패턴 서브 클래스 만들 때보다 훨씬 유연하게 기능을 확장할 수 있음 데코레이터의 슈퍼 클래스는 자신이 장식하고 있는 객체의 슈퍼 클래스와 동일 ~ 원래 객체에 들어갈 자리에 데코레이터 넣어도 상관 X 힌 객체를 여러 개의 데코레이터로 감쌀 수 있음 객체는 언제든지 감쌀 수 있음, 실행중에 필요한 데코레이터를 마음대로 적용 가능 - 객체 구성(인스턴스 변수로 다른 객체 저장하는 방식) 사용 ~ 첨가물을 다양하게 추가해도 유연성을 잃지 않도록 예시 ) 커피 주문 public abstract class Beverage { String description = "제목 없음"; public String getDescription..
-
Observer PatternJava/디자인패턴 2024. 1. 4. 18:07
🍄 Observer Pattern이란 무엇인가? 한 객체의 상태가 바뀌면, 그 객체에 의존하는 모든 객체들에 연락이 가고 자동으로 내용이 갱신되는 방식 주제에서 중요한 데이터 관리 → 주제 데이터 바뀌면 옵저버에게 바뀐 값 / 바뀌었다는 소식이 전해진다. 옵저버 객체들은 주제를 구독하고 있으며(주제 객체에 등록되어 있음), 주제 데이터가 바뀌면 갱신 내용을 전달받는다. Subject : Observer = 1 : N 관계 public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObservers(); // 모든 옵저버들에게 변경내용을 알..
-
프로그래머스 - 단속카메라, 백준 13549, 5427Java/코딩테스트 2023. 11. 10. 02:28
🚨 프로그래머스 : 단속카메라 https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚨그리디 알고리즘 문제 🚨진입 / 진출 지점에서 만난 것도 만난 것으로 인정하므로 구간 끝에 카메라를 설치한다고 생각하면 된다. 🚨여기서 진입 지점으로 정렬할지 진출 지점으로 정렬할지 헷갈렸는데 진출 시점으로 정렬해야 한다. 첫 구간이 아주 길다면 내부 구간이 다 무시되기 때문이다. 🚨그림 설명 🚨전체코드 참고로 pivot은 이 구간의 최솟값이 -30000이라 -30..
-
백준 11501, 2169, 프로그래머스 체육복Java/코딩테스트 2023. 11. 7. 18:21
📈 백준 11501 : 주식 https://www.acmicpc.net/problem/11501 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 📈 메인 로직 각 날짜의 주식가격을 배열에 쭉 저장해둔다. 그리디 유형의 문제긴 하지만, 무조건 높을때 다 팔고 끝나는것이 아니라 마지막날에도 이전보다 올랐다면 팔 수 있다. 뒤에서부터 차례로 돌면서 현재 내가 가진 최댓값보다 높은 가격이 나왔다 = 그날 기점으로 가격이 떨어졌다 이것이므로 최댓값을 갱신해준다. 그 외에는 최댓값보다 낮은 날이므로 무조건 사..
-