반응형
주말에 javascript를 이용한 코딩테스트가 있기 때문에 프로그래머스로 연습하려고 합니다.
두 개씩만 뽑으면 돼서 처음엔 이중 for문을 사용한 방법을 떠올렸지만 시험엔 다른 알고리즘을 사용해야할 상황이
나올 가능성이 높아보여서 연습할 마음으로 일부러 백트레킹을 사용하였습니다.
let result = new Array();
let num = new Array();
let visited = new Array();
function solution(numbers) {
recur(0, numbers);
return result.sort((a,b)=>{
return Number(a)-Number(b);
});
}
function recur(depth, numbers){
if(depth==2){
let sum = 0;
num.forEach(el=>sum+=el);
if(!result.includes(sum))
result.push(sum);
return;
}
for(let i=0; i<numbers.length; i++){
if(!visited[i]){
visited[i] = true;
num[depth] = numbers[i];
recur(depth+1, numbers);
visited[i] = false;
}
}
}
반응형
'Algorithm' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 Level1 - 문자열 다루기 기본 [ javascript ] (0) | 2021.01.18 |
---|---|
프로그래머스 코딩테스트 연습 Level1 - 문자열 내림차순으로 배치하기 [ javascript ] (0) | 2021.01.18 |
백준 1759번 암호 만들기 [ Java ] (0) | 2021.01.15 |
백준 1182번 부분수열의 합 [ Java ] (0) | 2021.01.15 |
백준 6603 로또 [ Java ] (0) | 2021.01.14 |