본문 바로가기

분류 전체보기33

[Effective java] item2 생성자에 매개변수가 많다면 빌더를 고려하라 이펙티브 자바 3/E - 교보문고 프로그래밍인사이트 | 자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용 www.kyobobook.co.kr 개요 정적 팩터리와 생성자에는 선택적 매개변수가 많을때 적절히 대응하기 어렵다. 책에나온 3가지방법 점층적 생성자 패턴 , 자바빈즈 패턴 , 빌더 패턴 을 사용해보자 점층적 생성자 패턴 필수 매개변수만 받는 생성자,그리고 선택 매개변수를 1개씩 추가하여 받는 생성자들을 만든다. 원치 않는 매개변수까지 포함할때가 있는데 어쩔 수 없이 매개변수에 값을 지정해줘야 한다. 매개변수 개수가 많아지면 코드가 작성하기 어려워진다. (매개변수가 무엇인지 헷갈리게 .. 2021. 8. 31.
[Effective java] item1 생성자 대신 정적 팩터리 메서드를 고려하라 이펙티브 자바 3/E - 교보문고 프로그래밍인사이트 | 자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용 www.kyobobook.co.kr 개요 흔히 우리는 클래스의 인스턴스를 얻기 위하여 생성자를 사용한다. 생성자를 활용한 인스턴스 생성 class character{ int hp; int mp; character(int hp,int mp){ hp=this.mp; hp=this.mp; } } 팩터리 메서드를 사용하기에 앞서 팩터리 메서드란 무엇일까? 클래스의 객체를 생성하는 메서드를 만들고 이를 static선언을 하여 인스턴스를 만드는 것이다. 정적 팩터리 메서드를 활용한 인스턴스 생성.. 2021. 8. 31.
LIS알고리즘 최장 증가 부분 수열 LIS(Longest Increasing Subsequence) 최장 증가 부분수열이란 ? 더보기 임의의 수열이 주어질 때, 이수열에서 만들 수 있는 부분수열 중 오름차순으로 정렬된 가장 긴 수열을 최장 증가 부분수열이라 한다. -나무위키- 예를 들어보자 3 5 7 9 2 1 4 8이란 수열있다. 위 수열에서 몇가지의 수를 선택하여 부분수열을 만들 수 있다. 이때 오름차순이면서 가장 긴 수열은 3 5 7 8 또는 3 5 7 9이다. 동적 계획법으로 최장 증가 부분 수열을 구해보겠다. 새로운 배열을Dp를 만들고 정의는 다음과 같다. Dp[i]는 배열의 [i]를 마지막 값으로 가지는 수열의 lis이다. index 0 1 2 3 4 5 6 7 A 3 5 7 9 2 1 4 8 Dp inde.. 2021. 8. 19.
동적 계획법(Dynamic Programing, Dp) 동적 계획법 - 위키백과, 우리 모두의 백과사전 수학과 컴퓨터 과학, 그리고 경제학에서 동적 계획법(動的計劃法, dynamic programming)이란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 이것은 부분 문제 반복과 최적 부분 ko.wikipedia.org 동적 계획법 더보기 동적 계획법의 원리는 매우 간단하다. 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것이다. 많은 알고리즘 문제를 풀다보면 구했던 값을 불필요하게 계속 구하는 과정을 할 때가 있다. 다음 예시를 보자 예시 피보나치 수열을 만들어보자 int fib(int n) { if(n == 0) return 0; else if (n==.. 2021. 8. 5.