반응형
[Gold IV] 로또 - 2758
성능 요약
메모리: 30840 KB, 시간: 1944 ms
분류
다이나믹 프로그래밍(dp)
문제 설명
선영이는 매주 엄청난 돈을 로또에 투자한다. 선영이가 하는 로또는 1부터 m까지 숫자 중에 n개의 수를 고르는 로또이다.
이렇게 열심히 로또를 하는데, 아직까지 한 번도 당첨되지 않은 이유는 수를 고를 때 각 숫자는 이전에 고른 수보다 적어도 2배가 되도록 고르기 때문이다.
예를 들어, n=4, m=10일 때, 선영이는 다음과 같이 고를 수 있다.
- 1 2 4 8
- 1 2 4 9
- 1 2 4 10
- 1 2 5 10
따라서 선영이는 로또를 4개 산다.
선영이는 돈이 엄청나게 많기 때문에, 수를 고르는 방법의 수 만큼 로또를 구매하며, 같은 방법으로 2장이상 구매하지 않는다.
n과 m이 주어졌을 때, 선영이가 구매하는 로또의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 n과 m으로 이루어져 있다.
출력
각 테스트 케이스에 대해 선영이가 로또를 몇 개나 구매하는지 한 줄에 하나씩 출력한다.
점화식은 해당 m-1이하의 n개의 경우의 수와 m//2이하의 n-1개일 때의 경우의 수를 구해주는 것.
ex) 첫 번째인 경우 n,m=4,10이라고 가정하에 1,2,4,8 ~ 1,2,4,9까지의 경우의 수와, 1,2,5,(10) 1,2,4,(10) 경우의 수
'알고리즘' 카테고리의 다른 글
[Gold V] 캠프 준비 - 16938 (조합) (1) | 2022.08.02 |
---|---|
[Silver I] 타일 위의 대각선 - 2168 (수학) (1) | 2022.08.01 |
[Silver III] 서강근육맨 - 20300 (그리디,정렬) (1) | 2022.07.31 |
[Silver IV] 스위치와 램프 - 16960 (구현) (0) | 2022.07.31 |
[Silver III] 넷이 놀기 - 2121 (set) (1) | 2022.07.29 |