"(๋ฐฑ์ค/ C++) 12101- 1, 2, 3 ๋ํ๊ธฐ2 / ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ, ์ฌ๊ท"
https://www.acmicpc.net/problem/12101
https://cclient.tistory.com/128
์ด ๋ฌธ์ ์ฐ์ฅ์ ์ด๋ค. ๋ณ๋ก ์ด๋ ต์ง ์์์ง๋ง
๊พธ์ญ๊พธ์ญ ๋ฃ์ ๋๋์ด๋ ๋ค. DFS ์ด๊ธฐ ๋๋ฌธ์ ์ค์์ํ๋ก ๋์ด์๋ค.
์ ๊ทธ๋ฆผ์ด ์ดํด๋ ์ง๋ .. ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋ ์ฝ๋ ๊ตฌํ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. +1, +2, +3 ์ ํด์ฃผ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋๊ณ ๊น์ด์ฐ์ ํ์์ ํ๋ค.
๋ ธ๋์์ ๊ฒฝ๋ก๋ ๋ง์ ์ด ๊ฒฐ๊ณผ 4๊ฐ ๋๋ ๊ฒฝ์ฐ์ด์ง๋ง 3๋ฒ์งธ๊ฐ ์๋๋ค. ์ฆ ํจ์ค ๊ทธ ๋ค์ a๊ฒฝ์ฐ๋ก ๋์ด๊ฐ๊ฒ ๋๋๋ฐ vec๋ 1, 1, 1, 1 ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋นผ์ฃผ๊ณ ๋ค์ ๊ฒฝ์ฐ์ธ 2๋ฅผ ๋ฃ์ด์ค๋ค. vec 1, 1, 1, 2
b๊ฒฝ์ฐ๋ ํธ๋ฆฌ์ ๋์ด๊ฐ ๋ณํ ๋ ๋ํ๋ ๊ฐ์๋ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ pop์ ์งํํด์ค๋ค.
๋์ด๋ฅผ ๋ณ๊ฒฝํ ๋๋ vec๊ฐ ๋น์ด ์์ง ์์๋๋ง ์ฑ๋ฆฝํ๋ค.
#include <iostream>
#include <vector>
using namespace std;
int aResult = 0;
int n, k;
vector<int> vec;
bool check = false;
void Func(int pNum, int pTarget)
{
if (pNum > pTarget)
{
vec.pop_back();
return;
}
if (pNum == pTarget)
{
aResult++;
if (aResult == k)
{
check = true;
for (int a = 0; a < vec.size(); ++a)
{
cout << vec[a];
if (a != vec.size() - 1)
cout << "+";
}
}
vec.pop_back();
return;
}
vec.emplace_back(1);
Func(pNum + 1, pTarget);
vec.emplace_back(2);
Func(pNum + 2, pTarget);
vec.emplace_back(3);
Func(pNum + 3, pTarget);
if(!vec.empty())
vec.pop_back();
}
int main(void)
{
cin >> n >> k;
Func(0, n);
if (!check)
cout << -1;
return 0;
}
'๐ coding test > โฝ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!