[Effective Java 3/E] 생성자에 매개변수가 많다면 빌더를 고려하라 Effective Java 3/E선택적 매개변수가 많을 때에는 점층적 생성자 패턴을 쓰기 보다는 빌더(Builder)의 사용을 고려하라.그 외에 점층적 생성자 패턴, 자바빈즈 패턴 등이 있다.점층적 생성자 패턴의 경우 매개변수가 많아지면 코드 작성이나 읽기에 어렵다. 점층적 생성자 패턴 (telescoping constructor pattern)생성자에 매개변수에 조합에 따라 매개변수가 1개, 2개, 3개.. 점층적으로 생성자를 모두 선언하는 방식 자바빈즈 패턴 (JavaBeans pattern)매개변수가 없는 생성자로 객체 생성 후, Setter로 매개변수 값을 설정하는 방식하지만 자바 빈즈 패턴의 경우 객체가 완전히 생성..
출저 : https://www.acmicpc.net/problem/14890 "시뮬레이션" 해당 문제는 다리를 놓을 수 있느냐 없느냐 를 판별하는 것이 핵심인 문제로 아래와 같이 경사로는 두 가지로 분류할수 있다. 내려가는 경사로와 올라가는 경사로가 둘다 비슷하지만 조금 다른 부분이 있다. 내려가는 경사로의 경우 경사로가 이전에 방문하지 않았던 칸으로 놓이기 때문에, 경사로 설치 여부 체크를 하지 않아도 된다. 하지만 올라가는 경사로의 경우 이전에 방문했던 칸에 경사로를 놓아야 하기 때문에 이전에 경사로를 놓아 지금 칸에 도착한 것인지 판별해야한다... 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647..
출저 : https://www.acmicpc.net/problem/15686 "Brute force/ 다해보자." 1. 마을의 전체 치킨집 에서 m개의 치킨집을 고른다2. 각 집에서 m개의 치킨 중에 가장 가까운 거리를 구하고 모든 집에서의 치킨 거리를 더한다.3. 치킨 거리의 값 중 최소값을 구한다. 고대로 해줬다. 재귀를 가지고 m개의 치킨 집을 고른 후 거리를 구해줬다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687import java.io.Buffer..
출저 : https://www.acmicpc.net/problem/14500 "DFS 로 4칸을 간다. ㅗ 경우는 별도로 처리" DFS를 통해 4칸을 이동하면 테트로미노의 도형 4가지를 구할 수 있다. 문제는 의 처리이다. 아래와 같이 처리해 주었다. map을 다시 for 문을 돌면서 4개 셀의 값을 선택하여 처리한다. 1 : ㅗ 만들 수 없는 경우2 : 그냥 선택한 4개 셀을 다 더하면 되는 경우3 : 중앙값 + ( 4개 셀의 값 - 이중 최소인 값) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757..
출저 : https://www.acmicpc.net/problem/14501 "시뮬레이션" 12345678910111213141516171819202122232425262728293031323334353637import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer; public class Main { static int N; static int map[][]; static int max = 0; public static void main(String[] args) throws IOException { BufferedReader br = new ..
출저 : https://www.acmicpc.net/problem/2309 "DFS" 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import java.util.Arrays;import java.util.Scanner; public class Main { static int[] talls = new int[9]; static boolean[] visited = new boolean[9]; static boolean find; static int[] res = new int[7]; static Scanner sc = new Scanner(System.in); public static v..
출저 : https://www.acmicpc.net/problem/9205 "가지치기, 플로이드워셜" 풀다가 시간초과가 났다. 가지치기나 DP 등이 필요할거 같다는 생각이 들었고, 갈수 있냐 없냐의 문제였음. 그냥 특정 지점에 맥주를 가장 많이 들고 간 경우만 지나갈 수 있게 해줬다... 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java..
출저 : https://www.acmicpc.net/problem/1592 "시뮬레이션" 1234567891011121314151617181920212223242526272829303132333435import java.util.Scanner; public class Main { static int n,m,l; static int[] map; static int cur, next; static int res; static Scanner sc = new Scanner(System.in); public static void main(String[] args) { n = sc.nextInt(); m = sc.nextInt(); l = sc.nextInt(); map = new int[n]; while(true..
출저 : https://www.acmicpc.net/problem/14889 "비트마스크도 쓸수 있고, 그냥 DFS 로 짝지어서 할 수도 있고" 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer; class Main { static int N; static int[][] map; static bo..
출저 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LwsHaD1MDFAXc "가장 많이 열리는 걸 열고, 그다음에 차근차근." 알고리즘 기본 로직은 맵에서 주위에 지뢰가 없는 칸을 탐색해 먼저 클릭하여 해당 칸을 오픈한다. 이렇게 오픈된 나머지 8칸에 대해서도 똑같은 검사를 한다. 이렇게 하여 주위에 지뢰가 없는 칸들이 모두 없어 지게 되고, 그 후에 남아있는 칸들의 수를 세서 최종 값을 더한다. 이때, 지뢰가 없는 칸의 탐색은 BFS를 통해 한다. 더해서 아래 큐에 들어가는 중에 중복이 생겨났었고, 시간초과가 났다. 탐색은 중복을 줄이는 것이 정말 중요하다. visited 배열을 두어 다시 들어가지 않..
- Total
- Today
- Yesterday