JAVASCRIPT/코딩테스트
[프로그래머스] 1단계 - 삼총사
예글
2024. 2. 14. 16:25
1. 문제 설명
2. 답안
const NUM = 3;
function solution(number) {
let answer = 0
const tmp = []
const backtrack = (cur) => {
// tmp 길이가 3이면
if (tmp.length === NUM){
// tmp의 합을 계산 후 0이면 answer에 1 더하기
answer += tmp.reduce((a,b)=> a + b) ? 0 : 1
return
}
// tmp 만들기
for (let i = cur; i < number.length; i++){
tmp.push(number[i])
// 재귀호출할 때마다 cur을 사용하여 다음 인덱스로 이동
backtrack(i + 1)
// 다음 경우를 탐색하기 전 현재 요소를 제거
tmp.pop()
}
}
backtrack(0)
return answer
}
- 이 문제를 통해 백트래킹을 배웠다. 삼중for문으로도 풀 수 있었지만 알고리즘을 공부하기 위해 코딩테스트를 푸는 만큼 최대한 알고리즘을 활용해서 풀면 좋은 것 같다. 다음에 비슷한 문제가 나오면 스스로 해결할 수 있도록 내 것으로 만들어야 겠다!