
01. ๐ ๋ฌธ์ ํ์
T: ํ
์คํธ์ผ์ด์ค ๊ฐ์
L: ๊ดํธ ๋ฌธ์์ด์ ๊ธธ์ด
* ๊ดํธ ๋ฌธ์์ด์ ์ต๋ ๊ธธ์ด๋ 5000์ผ๋ก, ๊ฐ ๊ธธ์ด ๋ณ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด ๊ฐ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฐฐ์ด ํฌ๊ธฐ
์ฃผ์ด์ง L๋งํผ์ ๊ธธ์ด์์ ์ค๋ณต๋์ง ์๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ ๋ฌธ์์ด ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์
L์ ๊ธธ์ด๊ฐ ์ง์์ผ๋๋ง, ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ์กด์ฌํ ์ ์๋ค.
L์ด 2์ฉ ์ฆ๊ฐํ ๋๋ง๋ค 1๊ฐ์ ๊ดํธ ์์ด ์ถ๊ฐ๋๋ฉฐ, 1๊ฐ์ ๊ดํธ๋ฅผ 2์ฉ ์ฆ๊ฐ์ํค๋ฉฐ ๊ณ ์ ์์ผ๋๊ณ ๋๋จธ์ง ๋น ๊ณต๊ฐ์ ๊ธธ์ด์ ํด๋นํ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ ๋ฌธ์์ด ๊ฐ์๋ฅผ ๊ฐ๊ฐ ๊ณฑํ์ฌ ์ค๋ณต๋์ง ์๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ ๋ฌธ์์ด ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
L: 2
| ( | ) |
DP[2] = DP[0] * DP[0]
L: 4
| ( | ) | ||
| ( | ) |
DP[4] = (DP[0] * DP[2]) + (DP[2] * DP[0])
01-1. ๊ฐ๋ฅํ ์๊ฐ ๋ณต์ก๋
L์ ๊ฐ์ ์ํด ์ง๋ฐฐ๋๋ ๋ฌธ์ ๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(L^2) ์ผ๋ ์ฐ์ฐํ์๊ฐ 2e8ํ ๋ฏธ๋ง์ด๊ธฐ ๋๋ฌธ์,
์๊ฐ๋ณต์ก๋ O(L^2) ์ดํ๋ก ํด๊ฒฐํด์ผ ํจ์ ์ ์ ์๋ค.
01-2. ์๊ณ ๋ฆฌ์ฆ ์ ํ
- ๊ท์น์ ๊ฐ์ง๋ ๋ฌธ์ ๋ก L์ ๋ํ ์ค๋ณต ์ฐ์ฐ์ผ๋ก ์ธํ ์๊ฐ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฉ๋ชจ์ด์ ์ด์ ์ ํตํด ํด๊ฒฐํ ์ ์๋ค.
02. ๐ ์ฝ๋ ์ค๊ณํ๊ธฐ
- L์ ์ ๋ ฅ๋ฐ์
- L์ ๋ํ์ฌ ์ฌ๊ท์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ์ฐพ์ Vector v์ ์ ์ฅ
- L์ด ํ์์ผ ๊ฒฝ์ฐ, ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด ๋ ์ ์์ผ๋ฏ๋ก, 0์ ๋ฐํ
- L์ ๋ํ์ฌ ์ด๋ฏธ ์กด์ฌํ๋ v๋ ๋ฐ๋ก ๋ฐํ
- v์ ๋ํด์ ๊ณฑ์ฐ์ฐ/ํฉ์ฐ์ฐ ์งํ ํ, ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ์ฌ ๋ชจ๋๋ฌ ์ฐ์ฐ
03. ๐ ๏ธ ์๋๋ณ ์์
1ํ์ฐจ
- v์ ์์์ ๋ํด int๋ก ์ ์ธํ์ฌ, ์ค๋ฒํ๋ก์ฐ๋ฅผ ๊ณ ๋ คํ์ง ๋ชป ํจ -> long long ์ผ๋ก ํ์ ๋ณ๊ฒฝ
2ํ์ฐจ
- ๋ชจ๋๋ฌ ์ฐ์ฐ์ ๊ณฑ์ฐ์ฐ์๋ง ์ ์ฉํ์ฌ ์ค๋ฒํ๋ก์ฐ ๋ฐ์ -> v์์์ ํฉ์ฐ์ฐ ํ์๋ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์งํํ๋๋ก ์ถ๊ฐ
3ํ์ฐจ
- ํจ์์ ๋ฐํ ํ์ ์ int -> long long ์ผ๋ก ์์
4ํ์ฐจ
04. ๐๏ธ ์ ๋ต ์ฝ๋
#include <bits/stdc++.h>
using namespace std;
const long long MOD = (1e9 + 7);
vector<long long> v(5001, -1);
long long func(int L){
if(L % 2 != 0) return 0;
if(v[L] != -1) return v[L];
int idx = 0;
long long sum = 0;
while(idx <= (L - 2)){
sum += (func(idx) * func(L - 2 - idx)) % MOD;
sum %= MOD;
idx += 2;
}
return v[L] = sum;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int T, L;
v[0] = 1;
cin >> T;
while(T--) {
cin >> L;
cout << func(L) << "\n";
}
return 0;
}'Problem Solving > Baekjoon Online Judge (BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [C++] BOJ 1806 - ๋ถ๋ถํฉ (0) | 2025.04.10 |
|---|---|
| [C++] BOJ 8895 - ๋ง๋ ๋ฐฐ์น (0) | 2025.04.10 |
| [C++] BOJ 1562 - ๊ณ๋จ ์ (0) | 2025.04.09 |
| [C++] BOJ 2342 - Dance Dance Revolution (0) | 2025.04.08 |
| [C++] BOJ 10815 - ์ซ์ ์นด๋ (0) | 2025.04.06 |
์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์!