지난주와 지지난주 자료 구조 공부를 했었고 복습겸 정리해보려 한다.사실 할게 많아 계속 미뤘는데 이런 상태가 계속 반복되고 있어 드디어 정리 해보려 글을 쓴다.굉장히 긴 글이 될것 같은데 함께 힘내보도록하자.그래서 먼저 자료구조는 왜 공부해야하는지 알고 시작을 해야하는데..사실 처음에 배웠을 때 알았는데 지금은 까먹었기 때문에 다시 알아봤다.💡 메모리를 효율적으로 사용해 데이터를 빠르고 안전하게 처리하자!이게 자료구조의 궁극적인 목표다.즉, 우리는 특정 상황(문제)에서 가장 짧은 시간에 효율적인 메모리 사용을 할 수 있는 자료구조를 잘 선택할 수 있도록 잘 배워놔야한다.그러려면 우리는 가장 먼저 시간복잡도를 알아야한다.시간복잡도란 무엇이고 왜 알아야할까?시간 복잡도는 우리가 위에서 말한 짧은 시간을 판..
1~N 사이의 숫자중 소수를 구하는 문제가 있습니다.이때let num = [];let N = 100;for(let i =1; i아래의 방법을 통해 O(N)으로 구할 수 있습니다.하지만 N이 커지면 커질수록 시간이 오래걸립니다.그렇기 때문에 에라토스테네스의 체 방법으로 소수를 구하면 빠릅니다.이 방법의 핵심은 n의 배수는 무조건 소수가 될 수 없다!let N = 100;let arr = [];for(let i = 0;i x); //=> 소수만 남아있다.
N개의 양의 정수가 있고 정수를 몇개 골라 그 합을 W로 만들 수 있는지 궁금하다면 비트 연산을 통해 구할 수 있다.N = 3, -> [1,2,3] , W = 5 일 때배열에서 만들 수 있는 조합은 2**3으로 총 8개 이다.2진법으로 표현하면 000, 001, 010, 011, 100, 101, 110, 111이다.0은 배열에서 고르지 않은것, 1은 배열에서 골라서 더한것에를들면 011은 [2,3]을 의미한다.for(let bit = 0; bit
자연수 n을 연속한 자연수들로 표현 하는 방법1 + 2 + 3 + 4 + 5 = 154 + 5 + 6 = 157 + 8 = 1515 = 15자연수 n의 홀수 약수의 개수와 같다.15의 약수 = 1,3,5,1519의 약수 = 1,199+10 = 1919 = 19
약수를 구하는법1부터 구하는 수까지 전부 나머지를 구해보는 방식시간복잡도 : O(N)let num = 10;let sum = 0;for(let i = 1; inum/2이상의 수는 약수에서 나오지 않기때문에 사용할 수 있는 방식시간복잡도 : O(N)let num = 10;let sum = 0;for(let i = 1; i🔆시간복잡도 : O(sqrt(N))let num = 100;let sum = 0;for( let i = 1; i*i i*i === num 이라는 뜻은 제곱수라는 뜻. 따라서 10*10 = 100일때 약수는 10 한개만 포함된다.i = 1일 때 100/1 = 100으로 100이 대응된다.i = 2일 때 100/2 = 50으로 50이 대응된다.따라서 num%i === 0일때의 약수는 2개씩을..
프로그래머스 Lv.2 피보나치 수를 풀때 필요했던 개념입니다.(a+b) % c = (a%c + b%c) % c예를 들면(2+1)% 3 = (2%3 + 1%3) %3 = 0