123더하기에서 조건이 추가되었다 바로 연속된 숫자는 사용할 수 없다는 것이다 그럼 어떻게 문제를 해결해야할까 우리는 테이블에 하나의 정보를 더 저장하면 된다! 바로 마지막 숫자다 숫자 n을 만들 때 마지막이 1이라면 n-1을 만드는 경우의 수에서 마지막이 2,3인 경우만 더하면 된다 이런식으로 나머지도 채워나가면 된다! 소스코드 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include #include using namespace std; #define ll long long const ll mod = 1e9+9; i..
처음 dp를 배우면 풀게되는 문제다 많이 틀리는 이유는 mod때문이 아닐까 싶다..! 수가 커질수있으니 매번 더하고 mod를 해줬다! 1,2,3으로 표현해야하므로 현재수 d[n]을 표현하는 방법은 1. d[n-1] 에 1더하기 2. d[n-2] 에 2더하기 3. d[n-3] 에 3더하기 이렇게 3가지 방법이 있다 결국 d[n] = d[n-1]+d[n-2]+d[n-3] 이다! 소스코드 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 #include #include using namespace std; #define ll long long ll n; ll d[1000002]; const ll mod = 1e9+9; int mai..
간단한 완전탐색 문제다 경우의수가 적기 때문에 연산자가 있는대로 다 넣어보면 된다 op배열에 연산자를 넣고 해당연산자가 남아있으면 수를 줄이고 넣어서 다음 숫자로 넘어가고 다시 수를 처음처럼 늘려준다 재귀를 타고 들어가기 때문에 연산한 결과를 계속 가져갔다가 원래대로 돌려준다 소스코드 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 32 33 34 35 36 37 38 39 40 #include #include #include using namespace std; int n; int op[4]; //+,-,x,/; int a[22],b[22]; int maxn = -1000000005; int minn ..