나의 풀이
function solution(number) {
let count = 0
for(let i = 0; i<number.length-2; i++){
for (let j = i+1; j<number.length-1; j++){
for (let k = j+1; k<number.length; k++){
if(number[i]+number[j]+number[k] === 0){
count += 1
}
}
}
}
return count
}
처음에 dfs먼저 생각이 났지만 number의 길이가 13밖에 되지 않기 때문에 3중 for문으로 해도 되겠다고 생각했다.
풀이 2
dfs로도 풀어봤는데 아직 익숙하지 않아서 오래 걸렸다.
function solution(number) {
let answer = 0;
function dfs(idx, count, sum) {
// end
if (idx > number.length) {
return;
}
// count === 3이면 함수 종료
if (count === 3) {
!sum && (answer +=1);
return;
}
// 해당 깊이 끝까지
dfs(idx + 1, count + 1, sum + number[idx]);
// 다른 깊이 시작
dfs(idx + 1, count, sum);
}
dfs(0, 0, 0);
return answer;
}
'알고리즘 > 프로그래머스 - JS' 카테고리의 다른 글
[프로그래머스] level.1 크기가 작은 부분 문자열 (0) | 2023.04.25 |
---|---|
[프로그래머스] level.2 전력망을 둘로 나누기 ★★ (0) | 2023.04.14 |
[프로그래머스 - JS] level.1 체육복 (0) | 2023.02.17 |
[프로그래머스 - JS] level.1 둘만의 암호 (0) | 2023.02.09 |
[프로그래머스 - JS] level.1 다트 게임 (0) | 2023.01.31 |