[BOJ] 1309๋ฒ | ๋๋ฌผ์ (C++)
2023. 8. 24. 19:23ใCoding Test/BOJ
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐ง๐ป๐ปํ์ด ๊ณผ์
Dynamic Programming ๋ฌธ์ ์ ๋๋ค. \( n = 1\), \( n = 2\), ... ์ผ ๋์ ๊ฒฝ์ฐ์ ์๋ฅผ ํ ๋ฒ ์ ๊ฒํด๋ณด๋ฉด, ํจํด์ด ๋ณด์ด๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
/*
- ์ด๋ค ํ ํ์ ์์ด์ ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง
[][], [o][], [][o]
*/
[][] [o][] [][o]
n = 1 : 1 1 1
n = 2 : 3 2 2
n = 3 : 7 5 5
n = 4 : 17 12 12
...
- [ ][ ]์ ๊ฒฝ์ฐ์ ์๋ n - 1๋ฒ์งธ์ [ ][ ] + [o][ ] + [ ][o] ๊ฐ์ ๋๋ค.
- [o][ ]๊ณผ [ ][o]์ ๊ฒฝ์ฐ์ ์๋ n - 1๋ฒ์งธ์ [ ][ ] + [o][ ] (๋๋ [ ][o]) ๊ฐ์ ๋๋ค.
- ๋ฐ๋ผ์, n๋ฒ์งธ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ n๋ฒ์งธ์ [ ][ ] + [o][ ] + [ ][o] ๊ฐ์ ๋๋ค.
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <iostream>
#include <vector>
using namespace std;
const int DIVISOR = 9901;
int main()
{
ios::sync_with_stdio(false);
cout.tie(NULL); cin.tie(NULL);
int N;
cin >> N;
int nothing = 1, existOne = 1;
for (int i = 1; i < N; i++)
{
int temp = existOne;
existOne = (existOne + nothing) % DIVISOR;
nothing = (nothing + temp * 2) % DIVISOR;
}
cout << (nothing + existOne * 2) % DIVISOR;
return 0;
}
728x90
๋ฐ์ํ
'Coding Test > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 1759๋ฒ | ์ํธ ๋ง๋ค๊ธฐ (C++) (0) | 2023.08.25 |
---|---|
[BOJ] 15686๋ฒ | ์นํจ ๋ฐฐ๋ฌ (C++) (0) | 2023.08.24 |
[BOJ] 11048๋ฒ | ์ด๋ํ๊ธฐ (C++) (0) | 2023.08.23 |
[BOJ] 1003๋ฒ | ํผ๋ณด๋์น ํจ์ (C++) (0) | 2023.08.21 |
[BOJ] 11726๋ฒ | 2xn ํ์ผ๋ง (C++) (0) | 2023.08.21 |