문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
function solution(numbers, target) {
const arr = numbers.slice();
const len = arr.length;
let result = [];
let result2 = [0];
let n = 0;
for (let x = 0; x < len; x++) {
result = result2;
result2 = [];
for (let v of result) {
result2.push(v + arr[x], v - arr[x]);
if (x === len -1) {
if (v + arr[x] === target) {
n++;
}
if (v - arr[x] === target) {
n++;
}
}
}
}
return n;
}
|
cs |
이 문제는 for문으로 해당 numbers를 길이만큼 반복하고, 그 안에 for ~ of를 이용해서 해당 숫자들을 +,-를 붙어서 push하며 이렇게 모든 경우의 수를 반복한 후에 마지막 숫자에 도달하면 셈이 끝난 숫자와 타켓을 비교하여 일치하다면 return 값인 n을 더하는 형태로 로직을 작성해주었다.
재귀함수와 dfs를 이용하면 더 효율성이 좋고 간결한 코드가 나올 것 같은데 그렇게 구현하지 못해 아쉽다.
'프로그래머스' 카테고리의 다른 글
6/1[문제풀이] 프로그래머스 Lv2 프린터 (0) | 2021.06.01 |
---|---|
5/31[문제풀이] 프로그래머스 Lv2 기능개발 (0) | 2021.05.31 |
5/27[문제풀이] 프로그래머스 Lv2 가장 큰 수 (0) | 2021.05.27 |
5/26[문제풀이] 프로그래머스 Lv2 최솟값 만들기 (0) | 2021.05.26 |
5/25[문제풀이] 프로그래머스 Lv2 피보나치 수 (0) | 2021.05.25 |