[BaekJoon 2775][๐ค1] ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ
โ ๋ฌธ์
๐ฏ ๋์ด๋
Bronze ๐ค1
๐ง ํ์ด
1. ๋ด ํ์ด (DP + ๋์ ํฉ)
- ์๊ณ ๋ฆฌ์ฆ
Dynamic Programming
- ์ค๋ช
2์ฐจ์ ๋ฐฐ์ด์ ์ด์ฉํ DP ํ์ด์ด๋ค.
๊ฐ ์ธต๊ณผ ๊ฐ ๋ฐฉ๋ค์ ํ๋์ ๋ฐฐ์ด์ ์์๋ก ์๊ฐํด 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๋ชจ๋ ๋ฐฉ๋ค์ ๊ฐ๋ค์ ๋์ ํฉ์ผ๋ก ๊ตฌํด์ ๋ฏธ๋ฆฌ ํ
์ด๋ธ์ ๋ง๋ค์ด ๋์๋ค. ๊ทธ๋ ๊ฒ ํด์ ์
๋ ฅ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ฐ๋ก ๋ฐฐ์ด์ '์์ ์ ๊ทผ'์ผ๋ก ๊ฐ์ ์ถ๋ ฅํ ์ ์์๋ค.
ํ ์คํธ ์ผ์ด์ค๊ฐ ์ผ๋ง๋ ๋ง์ด ๋ค์ด์ฌ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๋ฏธ๋ฆฌ ํ
์ด๋ธ์ ๋ง๋๋๋ฐ๋ k * n๋ฒ์ ๋ฃจํ๊ฐ ํ์ํ์ง๋ง, ๋ต์ ์ถ๋ ฅํ๋๋ฐ๋ O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- ์ฝ๋
๋ด ํ์ด ์ฝ๋
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int iT{};
cin >> iT;
int arr[15][14]{};
for(int i = 0; i < 14; ++i)
{
arr[0][i] = i + 1; // 0์ธต ์ฑ์ฐ๊ธฐ
}
// 14 * 14์ ๋ชจ๋ ๋ฐฐ์ด ๋ฏธ๋ฆฌ ๊ตฌํ๊ธฐ
for(int i = 1; i < 15; ++i)
{
for(int j = 0; j < 14; ++j)
{
if(j == 0)
{
arr[i][j] = 1;
continue;
}
arr[i][j] = arr[i][j - 1] + arr[i - 1][j];
}
}
while(iT--)
{
int iK{}, iN{};
cin >> iK >> iN;
cout << arr[iK][iN - 1] << "\n";
}
return 0;
}
2. ์ถ๊ฐ ํ์ด (์ต์ ํ๋ DP)
- ์๊ณ ๋ฆฌ์ฆ
Dynamic Programming
- ์ค๋ช
1์ฐจ์ ๋ฐฐ์ด๋ง์ ์ฌ์ฉํ DP ๋ฐฉ์์ด๋ค.
๋์ 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋นํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ผ๋ก ์๋ ์ ์๋ค. ๊ทธ ๋์ ์
๋ ฅ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ค์ ๊ณ์ฐ์ ํด์ผํด์ ํ
์คํธ ์ผ์ด์ค์ ์๊ฐ ์ปค์ง๊ฑฐ๋, 'k', 'n'์ ๊ฐ์ด ์ปค์ง ๊ฒฝ์ฐ ์๋๊ฐ ํ ๋จ์ด์ง ์ ์๋ค๋ ๋จ์ ๋ ์กด์ฌํ๋ค.
๋จ ํ ๋ฒ๋ง ๋ต์ ๋ด์ ์ถ๋ ฅํด์ผํ๊ฑฐ๋ ์กฐ๊ฑด๊ฐ์ด ํฌ์ง ์์ ๊ฒฝ์ฐ์๋ ์ต์ ์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์
๋ ฅ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ค์ ๊ฐ์ ๊ณ์ฐํด์ผ ํ๋ฏ๋ก O(k * n)์ด์ง๋ง, ๊ฐ๊ฐ์ ๊ฐ์ด ํฌ์ง ์์ ๊ฑฐ์ O(1)์ด๋ผ๊ณ ๋ ๋ณผ ์ ์๋ค.
- ์ฝ๋
๋ด ํ์ด ์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int iT{};
cin >> iT;
while(iT--)
{
int iK{}, iN{};
cin >> iK >> iN;
vector<int> vecDP(iN + 1, 0);
for(int i = 0; i <= iN; ++i)
{
vecDP[i] = i; // 0์ธต ์ฑ์ฐ๊ธฐ
}
// ์ธต์ ์ฌ๋ ค๊ฐ๋ฉฐ ๊ฐ ์ธต์ ๋ฐฉ ์์์ ๋ฐ๋ผ DP๋ก ๊ฐ ๊ฐฑ์
for(int iFloor = 1; iFloor <= iK; ++iFloor)
{
for(int iRoom = 1; iRoom <= iN; ++iRoom)
{
vecDP[iRoom] += vecDP[iRoom - 1];
}
}
cout << vecDP[iN] << "\n";
}
}
๐ญ ํ๊ธฐ
DP๋ผ๋ ๋์ผํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ผ๋ ๊ฐ๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅด๊ฒ ํ ์ ์๋์ง๋ฅผ ์ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์ฒ์์ ๊ท์น์ ์ด์ฉํ ์ ํ์์ ๋ง๋ค์ด์ ์์ ํ O(1)์ ๋ฐฉ๋ฒ์ด ์์๊น ๊ณ ๋ฏผํ์ง๋ง, ์๊ฐ๋ณด๋ค ๋ณต์กํ๊ณ DP ๋ฐฉ์์ด ๋ ์ง๊ด์ ์ด๊ณ ์๋๋ ์ถฉ๋ถํ ๋น ๋ฅด๊ธฐ์ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๊ฒ ๋์๋ค.
Comments