조건 카드를 N개 구매한다. 인덱스의 범위가 입력받은 N을 넘어서는 안된다 카드백에 들어있는 카드가 작은 것부터 산다. 구해야 할 것 arr에 입력받는다고 하면 arr을 더한 최대값을 구해야 한다. dp에 들어갈 값 각각의 최대값을 대입해서 넣어준다. import java.util.Scanner; public class Main { static long dp[]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int dp[] = new int[n+1]; int arr[] = new int[n+1]; for(int i = 1; i
지금까지 다이나믹 프로그래밍 문제를 풀면서 파악한 것으로 배열은 입력받는 배열, 정답을 담을 dp배열 이렇게 두가지를 선언하고 dp배열에 최대값 또는 최소값 등 구하는 값을 넣어 마지막에 dp[n]을 출력하는 공통점이 있었다. 접근할 때 생각할 것들을 정리하면 구하는 값 - dp에 들어갈 값 즉, 그 문제의 정답 - 내 경우에는 dp배열에 들어가는 값이 무엇인지 문제를 풀면서 도중에 길을 잃을 때가 있었다. 입력받은 배열과 dp배열을 정확하게 구분하자 문제의 조건 - 조건을 정리하는 것은 문제를 이해하는 방법중 하나인데 때로는 조건을 놓쳐서 틀린 경우가 있었다. 문제 접근방법 타일채우기 등 타일의 모양에 따라 달라지는 방법의 수를 구하는 문제는 그림으로 접근 이친수 등의 문제는 케이스마다 표로 정리하면 ..
public class Main { static long dp[]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); sc.close(); int length = str.length(); dp = new long[length + 1]; dp[0] = dp[1] = 1; if(str.charAt(0) == '0') System.out.println(0); else if(str.charAt(length-1) == '0' && str.charAt(length-2) != '1' && str.charAt(length-2) != '2') System.out.println(0); els..
점화식이 굉장히 쉬운 문제였는데 포스팅하는 것은 배열 선언에서 오류가 있어 많이 틀렸기 때문이다. 지금까지 java자료형에 대해 깊게 고민하지 않고 int로만 배열을 선언했는데 이렇게 하면 크기를 넘어서는 숫자에 대해서는 정확한 답을 구할수가 없다. 표현범위 short -32,768 ~ 32,768 int -2,147,483,648 ~ 2,147,483,647 long -9223372036854775808 ~ 9223372036854775807 Double -1.7E308 ~ 1.7E308 너무 범위가 큰 것 같으면 long으로 배열을 선언하자 public class Main { static long dp[]; public static void main(String[] args) { Scanner sc ..
이해하기 까지 오래걸렸던 문제였다. 일단 홀수에서는 주어진 타일만으로 타일링을 할 수 없다. 그러므로 n이 짝수일 때만 값을 수할 수 있다. n = 2인 경우 -> 가능한 경우의 수는 3개이다. n = 4인 경우 1. 일단, dp[2]인 경우에 2만큼이 공간이 늘어난 것이므로 dp[2]*3으로 계산 2. 1번 경우에 더불어 dp[4]일때만 가능한 경우가 있다. 이 경우 2가지를 더한다. -> 따라서 가능한 경우의 수는 11개이다. n = 6인 경우 1. dp[4] 인 경우에 2만큼의 공간이 늘어난 것으로 dp[4]*3 2. 1번의 경우는 [()()()()]*[()()] 이지만 2번에서 고려해 주어야 할 경우는 [()()]*[()()()()]이다. 따라서 이 경우를 생각하면 dp[2]의 경우에 n이 4인 ..
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "delete" jpa를 사용해서 delete 기능을 추가하려고했는데 이런에러가 계속 발생했다. javascript로 아래와 같이 값을 던졌는데 location.href = '/admin/delete?id='+values; 어쩐지 컨트롤러에서 계속 delete를 Integer로 바꿀 수 없다는 오류가 났다. 컨트롤러에 아래 어노테이션을 추가하니 해결되었다. @ConfigurationProperties(prefix="serv..
이 문제는 제곱수의 합을 구하는 문제로 처음에는 하나씩 더하기 형식으로 써내려가다보니 마지막 끝나는 자리로 푸는 것인가해서 이러한 방법으로 접근했으나 아니었다.. dp문제는 항상 이전 배열의 수를 어떻게 사용할지를 먼저 보는것이 포인트라면 포인트 인 것 같다. 일단 dp배열에는 내가 구하는 답이 들어간다는 사실을 잊지말자 예를들어 dp[4]에는 4를 제곱수 합으로 표현할 수 있는 최소값이 들어간다. 방법정리 i는 n까지 루프를 돈다. j는 i까지 루프를 돈다. 단 j의 제곱은 i를 넘길 수 없으므로 j * j가 i를 넘지 않는 범위까지 루프를 돈다. dp[i] 에는 기본값으로 i를 넣는다. 1을 i만큼 더하면 제곱수를 최대로 넣는셈 dp[i] 에 기본값으로 i가 들어가 있으니 그 다음부턴 1보다 큰 j를..
런타임 오류 런타임 오류가 계속 나서 보니 if문으로 조건을 정해주지 않아서 오류가 났다. if문으로 n >= 2의 조건으로 구별해 주지 않을 경우 dp[2] 에서 아웃오브바운드 에러가 난다. 당연한게 dp = new int[n+1]로 인덱스가 0, 1인 배열로 만들었는데 인덱스가 2인 곳에 값을 저장하겠다고 하니 이러한 에러가 날 수 밖에 없다. 배열 초기화 이 문제에서 기억해야 할 것은 배열을 new int[]로 초기화 해주면 인덱스마다 값을 넣지 않아도 0으로 초기화 할 수 있다는 것이다. 이게 항상 헷갈려서 3개가 연속되지 않도록 하는 조건이 걸리면 null이 뜰까봐 i인덱스 전까지는 모두 손수 0으로 세팅해주었던 것 같다. 아래 코드에서도 dp[3]의 경우를 지정해줄게 아니라 for문에 합쳐서 ..
- Total
- Today
- Yesterday
- Stack
- stackframe
- 동적프로그래밍
- 인접행렬
- 알고리즘
- 입출력장치
- client side rendering
- dfs
- react
- 배열
- 최단경로
- javascript
- C
- 소프트웨어
- server side rendering
- 스텍
- Java
- 이진탐색
- 구조체
- BFS
- 교착상태
- 세마포어
- 운영체제
- 클래스
- 자료구조
- 퀵정렬
- 재귀함수
- 인접리스트
- C++
- 병행프로세스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |