전체 글 334

[디자인 패턴] 10장 장식자 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 장식자 패턴은 객체에 동적 기능을 추가하기 위해 구조를 개선하는 패턴입니다. 다양한 확장을 위해 객체를 조합합니다. 기능 추가 새로운 기능을 추가하기 위해 클래스를 확장하는 방법은 상속과 구성이 있습니다. 기존 객체를 확장해 새로운 기능을 추가해야 하는 경우가 있습니다. 객체지향에서는 새로운 기능을 추가하기 위해 상속을 사용합니다. 상속은 클래스를 확장하는 대표적인 구현 기법입니다. 하지만 상위 클래스와 하위 클래스 간에 강력한 결합 관계가 생성된다는 것입니다. 이런 강력한 결합은 유연한 확장이 어렵고, 새로운 ..

백준_5567 결혼식(자바) / 구현

시간 & 메모리 제한 문제 입력 & 출력 구현을 이용한 문제풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Back_5567 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLin..

백준_1965 상자넣기(자바) / 최장 증가 수열(LIS)

시간 & 메모리 제한 문제 문제를 읽어 보면 최장 증가 수열을 이용해야 겠다는 생각이 들었습니다. 입력 & 출력 최장 증가 수열을 이용한 문제 풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; //최장 증가 수열을 구하는 문제... LIS public class Back_1965 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedRead..

[디자인패턴] 9장 복합체 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 복합체 패턴은 객체 간의 계층적 구조화를 통해 객체를 확장하는 패턴입니다. 복합체는 재귀적으로 결합된 계층화된 트리 구조의 객체입니다. 객체를 포함하는 객체 복합 객체는 객체가 또 다른 객체를 포함하는 것을 말합니다. 복합적인 객체 관계를 복합화 또는 집단화라고 합니다.

[디자인 패턴]8장 브리지 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 브리지 패턴은 객체의 확장성을 향상하기 위한 패턴으로, 객체에서 동작을 처리하는 구현부와 확장을 위한 추상부를 분리합니다. 다른 용어로는 핸들패턴 또는 구현부 패턴이라고도 합니다. 복잡한 코드 세상에 완벽한 프로그램은 없습니다. 따라서 발견하지 못했던 기능을 추가하거나, 새로운 업무를 추가하는 작업이 필요합니다. 이처럼 추가 요청에 의해 기존에 완성된 코드를 변경 작업하는 것을 유지 보수라고 합니다.

백준_9465 스티커(자바) / DP

시간 & 메모리 제한 문제 입력 & 출력 - dp 의 값의 크기를 봤을 때, 100000이고 100씩을 반복한다 하더라도 최대 1,000,000 이므로 int로도 충분히 담을 수 있다. DP를 이용한 문제풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Back_9465 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new Buff..

[디자인 패턴]7장 어댑터 패턴

공부하기 위해서 요약정리해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 어댑터 패턴은 코드를 재사용하기 위해 구조를 변경하는 패턴입니다. 오래된 코드 & 잘못된 코드 오래된 코드의 경우 우리는 새로운 기능을 만들기 위해 오래된 코드를 참고하거나 기존의 코드를 재사용합니다. 즉 이전 코드를 재사용하면서 새로운 코드를 재창조하는 것입니다. 하지만 모든 코드를 재사용할 수는 없습니다. 기술 발전, 환경 변화, 고객 요구 변경 등으로 인해서 기존의 코드를 재사용할 수 없도록 방해하는 요인이 됩니다. 개발자는 자신의 코드가 향후 재사용되도록 하기 위해 다양한 변화를 예측합니다. 그러나 완벽한..

백준_1890 점프(자바) / DP

시간 & 메모리 제한 문제 입력 & 출력 DP를 이용한 문제 풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Back_1890 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int N = Intege..

백준_2502 떡 먹는 호랑이(자바) / 브루드 포스

시간 & 메모리 제한 문제 입력 & 출력 브루드 포스를 이용한 문제풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Back_2502 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()..

백준_1743 음식물 피하기(자바) / DFS & BFS

시간 & 메모리 제한 문제 사방탐색을 문제에 주셔야죠,,,, 힌트에서 줬네요; 입력 & 출력 DFS를 이용한 문제풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Back_1743 { static int N,M,K,ans,temp; static int dx[]= {-1,1,0,0}; static int dy[]= {0,0,-1,1}; static boolean[][] map; static boolean[][] visited; public static void main(S..

[디자인패턴] 6장 프로토타입 패턴

공부 하기 위해서 요약 정리 해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인 하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 객체를 생성할 수 있는 방법이 new 키워드를 이용하는 방법과 객체를 복제하여 생성하는 방법이 있습니다. 프로토타입 패턴은 new 키워드를 사용하지 않고 객체를 복제해 생성하는 패턴입니다. 생성 객체를 생성하기 위해서는 먼저 클래스 선언이 필요합니다. 따라서 Hello 클래스를 선언했습니다.

백준_2846 오르막길(자바) / 구현

시간 & 메모리 제한 문제 입력 & 출력 문제풀이 package com.Back; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Back_2846 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); in..

[디자인패턴] 5장 빌더 패턴

공부 하기 위해서 요약 정리 해놓은 것입니다.. 정확하고 꼼꼼한 자료는 쉽게 배워 바로 써먹는 디자인 패턴을 확인 하시고 코드는 github.com/infohojin/patterns 을 참고해 주세요. 빌더 패턴은 추상 팩토리를 확장하여 크고 복잡한 객체를 생성할 수 있습니다. 건축물 빌더(builder)의 사전적 의미는 '건축물을 짖는 사람 또는 회사'입니다. 즉, 커다란 구조의 큰 물체를 설계하고 만드는 것을 의미합니다. 객체의 종류에는 단일 객체와 복합 객체 2가지가 있습니다. 단일 객체란 하나의 클래스로 생성된 객체를 말합니다. 객체는 데이터와 행동을 가지며 때로는 객체를 확장하기 위해 상속 구조를 적용하기도 합니다. 팩토리. 팩토리 메서드, 추상 팩토리 모두 단일 객체를 사용합니다. 복합객체는 ..