" ( ๋ฐฑ์ค/ C++ ) 9095 - 1, 2, 3 ๋ํ๊ธฐ "
https://www.acmicpc.net/problem/9095
๋ฌธ์ ๋ณด์ ๋ง์.. ์ ? ์ฌ๊ท ? ํ๊ณ , n์ 11๋ณด๋ค ์์ ์์์๋ค. dp๋ก ์ ํ์ด๋ ๋๋ ๋ฌธ์ ์๋๊ฐ ์๊ฐํ๋ค.
์๋์ ๊ฐ์ด ์ด๋ ํ ๋ฐฉ๋ฒ์ด๋ ํฉ์ด N์ด ๋๋ฉด ๋๊ธฐ ๋๋ฌธ์ N์ด ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ++ ํด์ฃผ๊ฒ ์ฝ๋ฉ ํ๋ค.
๊ฐํ์ ์ ๋ถ์ฌ์ ํ๋ ธ์๋๋ฐ 4%์์ ํ๋ ธ๋ค๊ณ ํ๋ฉด ๊ฐํ ์ ๋ถ์ฌ์ ์ด๋ค.
// 9095 - 1,2,3 ๋ํ๊ธฐ
#include<iostream>
using namespace std;
int aResult = 0;
void Func(int pNum, int pTarget)
{
if (pNum > pTarget)
return;
if (pNum == pTarget)
{
aResult++;
}
Func(pNum + 1, pTarget);
Func(pNum + 2, pTarget);
Func(pNum + 3, pTarget);
}
int main(void)
{
int mTC;
cin >> mTC;
while (mTC--)
{
int N;
cin >> N;
Func(0, N);
cout << aResult << endl;
aResult = 0;
}
return 0;
}
ํด๊ฒฐํ๊ณ ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด์๋ค.
๋ด์ฉ์ N์ ์๊ฐ 1, 2, 3, 4, 5, 6, 7 ... ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๊ฐ ์ ํ์์ผ๋ก ํํ ๋ ์ ์๋ค๋ ์ ์ ์ด์ฉํ DP์๋ค.
1[ 1 ], 2[ 2 ], 3[ 4 ], 4[ 7 ], 5[ 13 ], 6[ 24 ] ....
a[ n ] = a [ n - 1 ] + a [ n - 2 ] + a [ n - 3 ] ์ด ์ ์ ์กฐํฉ์ผ๋ก ๋ง๋ ์์ 1,2,3์ ๊ฐ๊ฐ ๋ ํ์ ๋ ํ์ฌ์ ์๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ ํ์์ด ์ฑ๋ฆฝ์ด๋๋ค.
๋น ๋ฅด๊ฒ ์ ํ์์ ์ฐพ์์ผ๋ฉด ์ข์ง๋ง n์ ์๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ์ฌ๊ท๋ก ํ์ด๋ ๋ฌธ์ ๋ ์๋ค.
'๐ coding test > โฝ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!