본문 바로가기

알고리즘4

[BOJ] 9465 스티커 (java) [BOJ] 9465 스티커 (java) 1. point & feedback 행 0부터 시작, 열 0부터 시작 dp[0][N] : 0열에서 출발하여 (0, N) 위치까지의 score 의 합 dp[1][N] : 0열에서 출발하여 (1, N) 위치까지의 score 의 합 ex) (0,0) 에서 처음 시작했다면 다음 선택할 수 있는 수는 대각선 (1,1) / (1,2) 이다. (0,2), (1,2) 는 선택해봐야 최대 값이 될 수 없음 (0,0) -> (1,1) -> (0,2) 를 가면되니 최대 값이 될 수 없음. dp[0][N] = Math.max(dp[1][N-1], dp[1][N-2]) + score[0][N] ex) dp[0][2] 이라 하자. dp[1][1], dp[1][0] 중 하나를 고를 수 있음... 2018. 1. 30.
[백준 알고리즘] 1005번 ACM Craft [백준 알고리즘] 1005번 ACM Craft (java) 1. point & feedback 건설순서 자료구조를 어떤걸 사용할 것인가? 나는 순서를 클래스에 담아 하나씩 찾는 것을 구현했는데 다른 사람꺼 참조하니 건물 순서를 ArrayList[] 에 담아서 처리 함. 배열의 ArrayList 를 사용하면 ArrayList 가 여러개 있는 것이다. 즉, 하나의 ArrayList Index에 건물 번호를 넣고. 선행 건물 순서를 value 로 넣는 것이지. 그런 뒤 ArrayList[Index] 의 value 중 가장 큰 것을 가져오는 것이지. 이게 내 것보다 Simple 하고 좋은 Answer 이다. 순서를 정한 뒤 시간을 구해야하는데 시간은 최대 시간을 구해야한다. 이를 어떻게 해결할 것인가? 컴퓨터가.. 2018. 1. 29.
[백준 알고리즘] 1003번 피보나치 (java) [백준 알고리즘] 1003번 피보나치 (java) 1. 피드백 1.1 2번은 캐시 사용해서 푼 것 / 3번은 캐시 사용하지 않고 푼 것 2. Source (캐시 사용) package acmicpc; import java.util.Scanner; /** * @author lee * */ public class Num1003UsingCache { private static int cache[][] = new int[41][2]; public static void main(String [] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); int n = 0; for (int i = 0 ; i < T ; i++) { n = sc.nextInt.. 2018. 1. 26.
[백준 알고리즘] 1002번 터렛 (Java) [백준 알고리즘] 1002번 터렛 1. 피드백 1.1 하나의 원이 다른 하나의 원 안에 있는 것을 생각 못함. 2. Source import java.util.Scanner; /** * @author lee * @desc * 1. 두 원이 너무 멀 때 - r > r1 + r2 * 2. 두 원이 한점에서 만남. (외접) - r = r1 + r2 * 3. 두 교점 - 나머지 조건 * 4. 두 원이 한점에서 만남. (내접) - r = |r1-r2| * 5. 하나의 원이 다른 하나의 원 안에 있고 중점이 같지만 두원이 만나지 않을 때 - x1 = x2 & y1 = y2 & r1 != r2 * 6. 두 원이 일치 ( x1 = x2 & y1 = y2 & r1 = r2 ) * 7. 하나의 원이 다른 하나의 원 안에 .. 2018. 1. 26.