https://school.programmers.co.kr/learn/courses/30/lessons/43165
๋ฌธ์ ์ค๋ช
n๊ฐ์ ์์ด ์๋ ์ ์๋ค์ด ์์ต๋๋ค. ์ด ์ ์๋ค์ ์์๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ์ ์ ํ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [1, 1, 1, 1, 1]๋ก ์ซ์ 3์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ค์ฏ ๋ฐฉ๋ฒ์ ์ธ ์ ์์ต๋๋ค.
- 1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3
์ฌ์ฉํ ์ ์๋ ์ซ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers, ํ๊ฒ ๋๋ฒ target์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์ซ์๋ฅผ ์ ์ ํ ๋ํ๊ณ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ์ฃผ์ด์ง๋ ์ซ์์ ๊ฐ์๋ 2๊ฐ ์ด์ 20๊ฐ ์ดํ์ ๋๋ค.
- ๊ฐ ์ซ์๋ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ํ๊ฒ ๋๋ฒ๋ 1 ์ด์ 1000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
numbers target return
[1, 1, 1, 1, 1] | 3 | 5 |
[4, 1, 2, 1] | 4 | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
+4+1-2+1 = 4 +4-1+2-1 = 4
- ์ด 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก, 2๋ฅผ return ํฉ๋๋ค.
๋ด ํด๋ต
#include <string>
#include <vector>
using namespace std;
int numbersCount = 0;
void dfs(vector<int> numbers, int target, int addNum)
{
if(numbers.size() == 0)
{
if(addNum == target)
numbersCount++;
return;
}
int numData = numbers.back();
numbers.pop_back();
dfs(numbers, target, addNum + numData); // ๋ํ๋ ๊ฒฝ์ฐ์ ์
dfs(numbers, target, addNum - numData); // ๋นผ๋ ๊ฒฝ์ฐ์ ์
}
int solution(vector<int> numbers, int target) {
int answer = 0;
int addNum =0;
dfs(numbers, target, addNum);
answer = numbersCount;
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ(C++) (0) | 2023.04.11 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค / level.3 / ๋คํธ์ํฌ(C++) (0) | 2023.04.10 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ(C++) (0) | 2023.04.06 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๋ชจ์์ฌ์ (C++) (0) | 2023.04.05 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๋์คํฌ ์ปจํธ๋กค๋ฌ(C++) (0) | 2023.04.04 |