Coding Test/알고리즘

문제 임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 깊이 우선 탐색(DFS, Depth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다. 입력 value', 'children' 속성을 갖는 객체 (Node) 'node.value'는 number 타입 'node.children'은 Node를 요소로 갖는 배열 출력 배열을 리턴해야합니다. 입출력 예시 let root = new Node(1); let rootChild1 = root.addChild(new Node(2)); let rootChild2 = root.addChild(new Node(3)); let leaf1 = rootChild1.addChild..
아니 피보나치 언제했다고 또 까먹었어••• 먼저 재귀로 피보나치를 구현해보자면 function fibonacci(n){ if ( n === 0 || n === 1 ) return 1; return fibonacci(n-1) + fibonacci(n-2); } 아조 쉽죠잉? 0과 1일 때는 1을 반환하게하고 나머지는 n-1 + n-2가 더해진 값을 리턴하면 된다. 만약에 n에 2가 들어왔다면, return문에 fibonacci(1) + fibonacci(0)이 되고, 그럼 각각 1을 리턴하니 결론적으로 2를 반환하게 될 것이다. 하지만 위와 같은 fibonacci는 작은 숫자에는 큰 무리 없이 작동하지만 만약 숫자가 커진다면 문제가 생기게 된다. 왜냐면 가지가 뻗어가듯 수를 계산식이 늘어나기 때문이다. 따..
문제 두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다. 주의사항 base, sample 내에 중복되는 요소는 없다고 가정합니다. 입출력예시 let base = [1, 2, 3, 4, 5]; let sample = [1, 3]; let output = isSubsetOf(base, sample); console.log(output); // --> true sample = [6, 7]; output = isSubsetOf(base, sample); console.log(output); // --> false base = [10, 99, 123, 7]; sample = [11, 100, 99, 123]; output = isSubsetOf(base..
정렬관련해서 한번은 정리하고 올려야한다고 생각했는데,, 이제서야 공부하는 나 ,, 그래도 지금이라도 해서 다행이라고 생각하며 폿으팅을 해봅니다. 만약 배열이 있고, 순서대로 정렬하고 싶을 때 요소를 하나하나씩 돌면서 배열을 정렬하려고 한다. 1. 첫 번째 요소가 두 번째 요소보다 크다면 둘의 자리를 교환한다. 2. 두 번째 요소가 세 번째 요소보다 크다면 둘의 자리를 교환한다. 이 방식을 제대로 정렬이 될 때까지 한무 반복한다. ● 내가 처음에 적었던 답안 function bubbleSort(arr) { for (let i = 0; i arr[j+1]){ let bigger =..