일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- DI
- 기술면접
- IOC
- Spring Framework
- 비동기
- DP
- Spring
- 다이나믹프로그래밍
- 웹
- response
- Spring MVC
- 파이썬
- Promise
- 서블릿
- JSP
- controller
- Service
- 백준
- 부스트코스
- Callback
- 코딩테스트
- 자바스크립트
- 부스터2기
- 알고리즘
- was
- servlet
- 면접
- 다이나믹 프로그래밍
- request
- 네이버
- Today
- Total
목록다이나믹프로그래밍 (5)
Sh개발일기

https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되 www.acmicpc.net 전형적인 다이나믹 프로그래밍 문제이다. n에 따라 규칙에 맞게 문제를 해결하다보면 점화식을 얻을 수 있다. 지켜야 하는 규칙은 다음과 같다..

https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다. www.acmicpc.net 전형적인 다이나믹 프로그래밍 문제로, n에 따른 규칙을 나열하다 보면 점화식을 얻을 수 있는 문제이다. n=1 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 -> 10가지 이를 DP배열로 나타내면 다음과 같다. [1,1,1,1,1,1,1,1,1,1..

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 www.acmicpc.net 전형적인 다이나믹 프로그래밍 문제이다. n=1부터 차근차근 경우를 구해보면 점화식을 얻을 수 있다. n=1 : 1 -> 1가지..

https://www.acmicpc.net/problem/11727 전형적인 다이나믹프로그래밍 문제이다. 지난번 풀었던 문제와 비슷한 문제로, n에 따라 문제를 풀다 보면 점화식의 규칙성을 찾을 수 있는 문제이다. n=1 -> 1개 n=2 -> 3개 n=3 -> 5개 다음과 같은 식으로 전개가 가능하다. 조금 더 확인을 위해 n=4 를 구해보면 11개가 나오는 것을 확인할 수 있다. 따라서 점화식은 다음과 같이 세워진다. DP[N] = DP[N-1] + 2*DP[N-2] 검산을 위해 8과 12를 구해보면 각각 171과 2731에 일치함을 알 수 있다. 이를 파이썬 코드로 나타내면 다음과 같다. (10007로 나눈 나머지임을 주의한다) 1 2 3 4 5 6 7 8 9 n = int(input()) #dp[..

전형적인 다이나믹 프로그래밍 문제이다. 1x2, 2x1의 타일을 가지고 2xn의 타일을 채우는 경우의 수를 구하는 문제이다. n=1부터 그림을 그려가며 갯수를 세어나가면 쉽게 규칙을 찾을 수 있다. n=1 -> 1가지 n=2 -> 2가지 n=3 -> 3가지 위의 모양을 보면 n=3인 경우, 1과 2의 모양들의 결합으로 이루어지는것을 볼 수 있다. 조금 더 정확한 확인을 위해 n=4,5인 경우까지 확인해보면 다음과 같은 규칙성을 찾을 수 있다 DP[n] = DP[n-1]+DP[n-2] 이를 코딩으로 나타내면 다음과 같다. (10007로 나눈 나머지로 표시해주어야 한다) 1 2 3 4 5 6 7 8 n = int(input()) dp = [0, 1, 2] for i in range(3, n+1): dp.ap..