[DP] 11053. ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 4
by rlaehddnd0422
๋ฌธ์
์์ด A๊ฐ ์ฃผ์ด์ก์ ๋ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด์ ๊ธธ์ด์ ๋ถ๋ถ์์ด์ ์ถ๋ ฅํ๋ ๋ฌธ์ .
์ฆ๊ฐ ์์ด์ ๊ธธ์ด๋ DP๋ฅผ ์ด์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
์ฐ์ ์ฆ๊ฐ์์ด์ ๊ธธ์ด๋ถํฐ ๊ตฌํด๋ด ์๋ค.
1. dp ๋ฐฐ์ด ๊ฐ์ ๋ชจ๋ 1๋ก ์ด๊ธฐํ ํฉ๋๋ค.
: v ๋ฐฐ์ด์์ ๋ชจ๋ ์ธ๋ฑ์ค์ ๋ฐฐ์ด๊ฐ์ ์ฆ๊ฐ ์์ด์ ์์์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ 1๋ก ์ด๊ธฐํ ํด์ค๋๋ค.
2. 0๋ฒ์งธ๋ถํฐ n-1๋ฒ์งธ ๊น์ง ์ด์ค ํฌ๋ฌธ์ผ๋ก ํ์ฌ ์ธ๋ฑ์ค ์์น์ ๊ฐ๋ณด๋ค ๋ค์ ์ธ๋ฑ์ค ์์น(j๋ฒ์งธ)์ ๊ฐ์ด ๋ ํฌ๋ค๋ฉด
dp ๋ฐฐ์ด์ j๋ฒ์งธ ๊ฐ๊ณผ, i๋ฒ์งธ ๊ฐ + 1์ค ํฐ ๊ฐ์ dp๋ฐฐ์ด์ j๋ฒ์งธ ๊ฐ์ ์ฝ์ ํฉ๋๋ค.
3. ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ์ถ๋ ฅ
dp ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์ญ์ถ์ ํ์ฌ ์ฆ๊ฐํ๋ ๋ถ๋ถ์์ด์ ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
์ญ์ถ์ ํ์ง ์๊ณ dp๊ฐ์ด 1์ธ ๋ฐฐ์ด๋ถํฐ ์์๋๋ก ๊ฐ์ฅ ํฐ ๊ธธ์ด์ธ 4๊น์ง ๊ฐ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง,
์ถ์ ๊ณผ์ ์์ ๊ฐ์ฅ ํฐ ๊ธธ์ด์ธ 4๋ฅผ ์ ์ ์์ผ๋ฏ๋ก ๋์์๋ถํฐ ์ญ์ถ์ ํ๋ ๊ณผ์ ์ด ํจ์ฌ ๋จ์.
์์ค์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n'
using namespace std;
int n;
vector<int> v(1001,0);
int d[1001];
int ans;
stack<int> st;
int main()
{
FASTio;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> v[i];
d[i] = 1;
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(v[j] > v[i])
{
d[j] = max(d[i] + 1, d[j]);
}
}
}
for(int i=0;i<n;i++)
{
ans = max(ans, d[i]);
}
cout << ans << endl;
int k = 1;
for(int i=0;i<n;i++)
{
if(d[i]==k)
{
st.push(v[i]);
k++;
}
}
while(!st.empty())
{
cout << st.top() << ' ';
st.pop();
}
return 0;
}
'๐ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DP] 13398. ์ฐ์ํฉ 2 (2) | 2023.09.16 |
---|---|
[Stack ํ์ฉ] 17299. ์ค๋ฑํฐ์ (0) | 2023.09.08 |
[Stack ํ์ฉ] 17298. ์คํฐ์ (0) | 2023.09.08 |
[C++] cin.ignore()์ผ๋ก ๋ฒํผ ๋น์ฐ๊ธฐ (0) | 2023.09.04 |
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm) (0) | 2023.02.13 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422