분류 전체보기 213

백준-15990번/1, 2, 3 더하기 5 (java)

전에 풀었던 1,2,3 더하기는 연속된 숫자를 허용했지만 이번 문제에서는 연속된 숫자를 사용하지 못한다는게 어려웠다. 4가 입력 되었을때의 경우의 수 1+(2,3으로 시작되는 합이 3인 경우) 2+(1,3으로 시작되는 합이 2인 경우) 3+(1,2으로 시작되는 합이 1인 경우) 이렇게 하면 연속되는 수가 없이 합의 경우의 수를 구할 수 있다. 이런 식으로 점화식을 만들려면 이차원 배열을 이용해야 한다 for(int i=4; i

알고리즘/백준 2024.02.09

백준-11052번/카드 구매하기

최대 지불 금액의 경우의 수를 모두 구해서 비교한다면 시간초과 오류가 발생할 것이다. 따라서 다이나믹 프로그래밍의 절차인 점화식을 만들어서 원하는 값을 구해야 겠다고 생각했다. 배열 p ==> i요소의 값은 카드 i개를 구매할때의 가격 배열 dp ==> N개의 카드를 구매할때의 최대금액 저장 배열 dp[1](카드 1개를 구매할때의 최대 금액) ==> p[1] dp[2](카드 2개를 구매할때의 최대 금액) ==> p[1](카드 한장의 금액) + dp[1](카드 한장 살때의 최대금액)과 p[2](카드 2장의 금액) 중의 최대값 dp[3](카드 3개를 구매할때의 최대 금액) ==> p[3](카드 3장 구매할때 가격)과 (dp[2]+p[1]),(dp[1]+p[2]) 중 최대 금액 . . . . 이러한 과정으로 ..

알고리즘/백준 2024.02.08

백준-9095번/1, 2, 3 더하기

문제를 보자마자 저걸 다 계산하는 프로그램은 시간이 엄청 걸릴 것이라고 생각했다 따라서 점화식을 만들어서 그에 대한 배열로 각 각의 요소의 값을 넣는 방식으로 코드를 짜야겠다고 구상 n=4 일때 맨 앞 이 1 + (n=3일때 방법의 수) 맨 앞 이 2 + (n=2일때 방법의 수) 맨 앞 이 3 +(n=1일때 방법의 수) 점화식 ==> arr[i]=arr[i-1]+arr[i-2]+arr[i-3]; 코드 package baekjoon; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWri..

알고리즘/백준 2024.02.05