본문 바로가기
반응형

알고리즘15

[JS] 프로그래머스 - 기능 개발 링크 : 기능개발 문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 10.. 2020. 3. 16.
[JS] N-Queens N-Queens알고리즘은 재귀의 응용이며, 구현 기간동안 back tracking과 너비우선탐색과(BFS), 깊이우선탐색(DFS)에 대하여 팀원과 충분히 대화하고 고민하며 공부해볼 수 있었다. 백트래킹(back tracking)_되추적은 어떤 노드의 유망성 점검 후, 유망하지 않으면 그 노드의 부모노드로 되돌아간 후 다른 자손노드를 검색하는 것이다. 유망성(Promising) 해답이 나올 가능성이 있는 노드(promising) 해답이 나올 가능성이 없는 노드(non-promising) 상대 공간 트리에서 깊이우선탐색(DFS)를 실시하면서, 유망하지 않은 노드는 가지쳐서(pruning)검색을 하지 않으며, 유망한 노드에 대해서만 그 노드의 자식노드를 검색함 우리 팀에서 (많은 시행착오 끝에) 세운 전략은 .. 2019. 12. 1.
[JS] 자료구조 - 코드 구현 전체 1-1. Stack_Functional const Stack = function(){ const someInstance = {}; const storage = {}; let count = 0; someInstance.push = function(value){ storage[count++] = value; }; someInstance.pop = funciton(){ if(count){ var result = storage[--count]; delete storage[count]; return result; } }; someInstance.size = function(){ return count; }; return someInstance; } 1-2 . Queue_Functional const Queue =.. 2019. 11. 27.
복잡도 분석, 시간복잡도 시간복잡도란 ? input에서 out이 될 때 가지 걸리는 시간 알고리즘을 구성한 명령어가 실행된 횟수(frequency of calling command) 알고리즘 배울 때의 핵심은 공간, 시간을 이용하는 것. 이 때, 공간과 시간은 거의 항상 반비례하다. 즉, 어떤 알고리즘이 얼마나 걸리느냐? 이다.(CPU 사용량) 공간복잡도 메모리를 얼마나 사용하는가(용량) 어던 알고리즘이 메모리를 얼마나 쓰느냐? (RAM 사용량) 공간이냐? 사긴이냐? 면 요즘은 시간이 우선이다. 시간복잡도를 고려하는 것은 최적화를 위해 필요하다. 다만, 데이터를 저장할 수 있는 메모리와 저장매채의 발전 덕에 과거보다는 덜 필요하긴하다. 시간복잡도 그래프(Big-O Complexity) 시간복잡도가 빠른순 O(logn) > O(n.. 2019. 11. 18.
[JS] _.shuffle 구현 코드스테이츠 shuffle기능의 구현을 정리한다. 기존에 나는 기존의 arrayList 를 받아 새로운 배열에 순서를 random하게 섞에 반환하는 코드를 다음과 같이 구현했었다. 코드는 복잡하지는 않지만 while(true)루트를 돌면서 stack에 부담이 큰것같다. _.shuffle = function(array) { let arrayLength = array.length; let result = new Array(arrayLength);//길이만큼 return 용 새배열 선언 for( let i = 0 ; i < arrayLength ; i++){//새배열의 Index를 하나 하나 돌면서 while(true){//index 하나에 무한 한번씩 루프문에 들어가 랜덤한 수를 뽑으며 랜덤한 Index 배.. 2019. 11. 17.
[JS] 알파벳을 숫자로 변환하는법 문제 In this exercise, you are required to, given a string, replace every letter with its position in the alphabet. (문자열이 주어졌을때, 각각의 문자를 알파벳의 몇번째 인지 숫자로 바꾸는 함수를 작성하세요.) If anything in the text isn't a letter, ignore it and don't return it. a being 1, b being 2, etc. (만약 문자가 알파벳이 아니라면, 무시하고 결과값에 포함하지 마세요. a 는 1, b 는 2, 등등 으로 변환됩니다.) 예시 alphabetPosition("The sunset sets at twelve o' clock."); // "20.. 2019. 9. 30.
[JS] 만일 reduce를 잊는다면 일어나는일 문제 convert nested (2-dimensional) array to flatten array! (2차원 배열을 1차원 배열로 전환하세요.) Examples: flatten([1,2,[3],[4]]); // [1,2,3,4] 나의 코드 function flatten (array){ for(let i = 0 ; i < array.length ; i++){ if(Array.isArray(array[i])){ if(array[i].length===0){ array.splice(i,1); i--; }else{ let temp = array[i]; array.splice(i,1); i--; for(let j = 0 ; j < temp.length ; j++){ array.push(temp[j]); } } .. 2019. 9. 30.
728x90
반응형