Java

    [디자인 패턴] 유형 분류 및 패턴 정리

    디자인 패턴유형 분류Cretional Pattern객체 생성에 관련객체 생성 시, 유연성 높이고 코드의 유지보수에 도움Structural Pattern프로그램 구조 관련자료구조 or 인터페이스 등 프로그램 구조 설계에 활용Behavioral Pattern반복적으로 사용되는 객체들의 상호작용 패턴화 학습할 패턴어댑터(Adapter) 패턴프로토 타입(Prototype) 패턴싱글톤(Singleton) 패턴컴포지트(Composite) 패턴데코레이터(Decorator) 패턴퍼사드(Facade) 패턴프록시(Proxy) 패턴옵저버(Observer) 패턴커맨드(Command) 패턴책임 연쇄(Chain of Responsibility) 패턴중재자(Mediator) 패턴방문자(Visitor) 패턴팩토리 메소드(Factor..

    [알고리즘] 동적 계획법(Dynamic Programming) & 메모이제이션(Memoization)

    [알고리즘] 동적 계획법(Dynamic Programming) & 메모이제이션(Memoization) 동적 계획법이란? 주어진 문제를 세분화시키고, 최적의 해법을 찾아내기 위한 방법 DP를 이용하면 중복된 부분을 제거하여 다시 계산하지 않아도 되는 장점이 있다. 이는 연산의 효율을 높여주는데 큰 역할을 한다. 이를 알아보기 위해서는 '피보나치 수열'로 알아보기 쉽다 피보나치 수열은 위와 같은 구조로 '재귀 함수'를 통해 구현된다. 즉, index 0과 1을 제외하고 f(n) = f(n-1) + f(n-2)로 정의가 가능하다. 하지만, index의 값이 커질수록 호출되는 재귀함수가 무궁무진하게 커지는 문제가 발생한다. 지금처럼 빨간 원으로 묶인 부분은, 완전히 똑같은 부분을 다시 불러오는 모습을 볼 수 있..

    [알고리즘] 백트래킹(Backtracking)

    [알고리즘] 백트래킹(Backtracking) [알고리즘] 백트래킹(Backtracking) 백트래킹이란?모든 경우의 수를 검색하는 알고리즘'특정조건'을 만족하는 모든 경우의 수를 찾고 싶을 때 유용DFS(깊이 우선 탐색)을 기반으로 하는 알고리즘 후보해 집합에서 최적해 집합을 찾아내는 문제에 적용 가능!후보해 : 정답이 될 가능성이 있는 모든 조합최적해 : 문제의 답으로 기준을 만족하는 해 DFS는 Brute Force 알고리즘으로, 재귀함수를 통해 그냥 모두 다 검사해서 찾음 DFS와 백트래킹의 차이점은 '가지치기'가지치기를 이용하기 때문에 DFS처럼 모든 경우의 수를 확인하는 알고리즘은 아님! 가지치기는 어렵게 생각하지말고 반복문에서 break나 return에 해당한다고 생각하자 백트래킹 대표 문제..

    [Java] GUI를 활용한 직원 관리 프로그램

    [Java] GUI를 활용한 직원 관리 프로그램 해당 프로젝트 정보(Github) : 링크 목표 - Singleton 디자인 패턴을 활용한 안정적인 객체 생성- Client와 Server 사이에서 IP/Port 연결을 통해 원활한 소켓 통신 구현- 소켓 통신 시, 객체 단위 전달을 위한 직렬화(Serializable) 구현- Client 생성 시 Thread를 활용한 구현- 프로그램 시각화를 위한 GUI의 JFrame 활용 클래스 다이어그램 Employee직원 정보 객채 : 번호, 이름, 직책, 거주지 정보 CRUD를 위한 getter와 setter 생성 및 서버 출력에 필요한 toString 메소드 오버라이드 소켓에서 객체 단위 전송을 위한 직렬화(Serializable) 적용 IEmpMgr구현이 필요..