Algorithm, boj, 합분해(2225)
2019-12-12
풀이 dp[i]는 i번째의 수가 기준이 되어 바이토닉 수열이 될때 최대의 길이 이다 바이토닉 수열은 S1 < S2 < … Sk-1 < Sk > Sk+1 > … SN-1 > SN 를 만족 해야 하므로 기존에 증가하는 부분수열, 감소하는 부분수...
틀린이유 result 변수를 매번 생성하지말고 곧장 dp에 저장하는 방법으로 변경해야 한다. dp의 초기값은 -1 : 해당 지점은 지나간적이 없다. 해당 지점을 지나갈때 dp의 초기값을 0으로 변경해주고 지나가면서 곧장 경우의 수를 더해준다.
풀이 점화식이 쉽게 도출된다. 주의할점 : 개수를 15746으로 나눈 나머지를 출력한다. dp[i] = dp[i-1]%15746 + dp[i-2]%15746; dp[i] %= 15746; 15746으로 나눈 나머지로 dp값을 구해야 한다.
틀린이유와 풀이 boolean[][] visitied을 이용해서 일반 dfs로 풀어주면 타임아웃이 발생한다 dp[i][j] = (i,j)지점에서 끝까지 갈수있는 경로 개수로 지정해서 메모이제이션을 이용할것 ex) dp[2][3] = 1이라면 2,1->2,2->...