분류 전체보기

    프로그래머스 - 보석 쇼핑 문제 (자바)

    programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 구간을 큐로 만들고 구간에 포함된 보석을 map으로 하여 1보다 작아지지 않게 하면서 구간을 늘리고 이동시키면서 해결하면 된다. 핵심으로는 구간을 늘리며 보석을 추가한 뒤 구간의 맨 앞에 있는 보석이 2개 이상인 경우 맨 앞의 보석을 구간에서 제거하는 일을 반복한다. 제거할때 마다 구간의 시작 지점이 +1 되는 것으로 해당 값을 변경한다. 구간 정리가 끝나면 map에 추가된 보석의 종류와 전체 보석의 종류가 동일하면서 구간의..

    프로그래머스 - 키패드 누르기 문제 (자바)

    programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 1단계 문제 이지만 시간이 좀 걸린 문제인데 이유는 1. 다이얼의 거리가 삼각함수를 통한 거리가 아니라 x 이동량 + y 이동량이라는 점입니다. 2. 다이얼의 위치를 잡아주는 식 이 두가지 때문인데 1번은 문제 예시까지 봐야 한다는 것는 교훈을 얻었고 2번의 경우는 ..

    Proxy pattern

    Proxy pattern 프록시 패턴은 어떤 객체에 대한 접근을 제어하는 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴입니다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스)과도 인터페이스의 역할을 수행할 수 있다. 기본 객체가 리소스 집약적인 경우. 자잘한 작업들은 프록시 객체가 처리하게 한다. 기본 객체에 접근을 제어해야하는 경우. 프록시 객체가 권한에 따라 접근 로직을 다르게 처리하게 한다. 실제로 Spring의 AOP는 Proxy 패턴을 통해서 적용 지점을 지정하고 앞 뒤로 횡단 공통 관심사를 처리하는 하고 있습니다. 프록시 패턴 장점..

    Facade Pattern

    어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. Clent는 Facade 하나만 알고 있으면 수많은 subsystem class들을 사용할 수 있다. 컴퓨터를 작동시키기 위해 우리는 단순히 전원버튼만을 누르지만 이것도 퍼사드 패턴의 예 사용자는 버튼 하나의 클릭 만으로 컴퓨터를 실행 시키지만 컴퓨터 내부에서는 다양한 동작을 통해서 부팅하게 된다. 아래의 예에서는 부팅 과정을 간략화 하였습니다. 1. 서브시스템 클래스 public class CPU { public void freeze() { System.out.println("freeze"); } public void jump() { System..

    Decorator Pattern

    Decorator Pattern 란 객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합하여 사용하는 방식 구조 Component ConcreteComponent 과 Decorator 가 구현할 인터페이스다. 두 객체를 동등하게 다루기 위해 존재함 ConcreteComponent 기능 추가를 받을 기본 객체 Decorator 기능 추가를 할 객체는 이 객체를 상속받는다. ConcreteDecorator Decorator 를 상속받아 구현할 다양한 기능 객체이다. 이 기능들은 ConcreteComponent 에 추가되기 위해 만들어 진다...

    Composite Pattern

    컴포지트 패턴(Composite pattern)이란 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 객체 그룹과 하나의 객체가 동일한 행위를 할때 적용, 트리구조를 생성할 때 사용될 수 있다. 예시는 파일 시스템으로 1. Component Node라는 Component를 구성합니다. (equals와 hashcode는 Directory에서 remove시 객체의 내용이 같다면 삭제 되도록 하기 위해서 재정의 하였습니다.) import java.util.Objects; public abstract class Node { private String name; public Node(String name) { this.name..

    Bridge Pattern

    브리지 패턴(Bridge pattern)이란 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다. Abstraction 기능 계층의 최상위 클래스. 구현 부분에 해당하는 클래스를 인스턴스를 가지고 해당 인스턴스를 통해 구현 부분의 메서드를 호출합니다. RefindAbstraction 기능 계층에서 새로운 부분을 확장한 클래스 Implementor Abstraction의 기능을 구현하기 위한 인터페이스 ConcreteImplementor 실제 기능을 구현합니다. 기존에 참조하여 연습하는 사이트의 예시가 별로여서 검색후 적절한 예시를 가져왔씁니다. 위의 그림과 같이 인터페이스와 구현 모두에 인터페이스 계층 구조가 있다고 가정해보겠습니다. Shape의 구현체인 Triangle, Pent..

    10. 자기소개 프로젝트 FrontEnd AWS EC2 만료에 따른 서비스 종료

    백엔드와 프론트엔드 각각을 따로 AWS EC2에 올렸는데 프론트엔드를 올렸던 AWS Educate의 EC2가 5월 6일부로 종료되어 자기소개 페이지 접속이 불가능해집니다. 백엔드의 경우 AWS 프리티어를 사용 중이어서 2021-08월에 종료됩니다.