분류 전체보기159 2020.08.25 Single number 풀이 (feat. 비트 연산자) 어제 풀었던 싱글 넘버 추출하는 문제. 어제 도저히 운동갔다와서 블로깅까지 할 체력이.. 아니었다^^ (핑계룰루!) 문제) 숫자가 담긴 배열이 주어진다. 이때 배열의 숫자는 2번 중복된다. 이때, 중복되지 않은 배열의 값은 무엇인가? 제약) O(n)과 별도의 공간을 쓰지 말것. (별도의 공간을 쓰지 말라는게 자바스크립트에서 의미 있는 말일까?) 풀이) 처음으로 정해진 시간 안에 문제를 풀었다! ^^ 배열을 우선 크기 순으로 정렬하고 -> 옆의 원소와 동일하면, 그 같은 원소 모두 삭제 -> 옆 원소와 다를 경우 return 한다. 배열인 array 도 결국 object의 일환이기 때문에 delete 키워드를 쓸 수 있다. splice가 아닌 delete를 쓴 이유는 배열의 원소가 삭제되면서 순서가 교란될.. 2020. 8. 26. 2020.08.24 Merge Two Binary Trees 풀이 문제 ) 두 개의 binary trees가 주어질때, 같은 위치의 노드의 합을 더해 새로운 binary tree를 만드는 것이다. 해결) 나는 너무 어렵게 접근했나보다. 해답은 생각보다 간단했다. (문제 풀때 너무 많은 시간이 걸리면, 그냥 답을 보고 익힌다. 수학의 정석 문제처럼, 알고리즘도 결국엔 같은 패턴이 있다고 생각하여 초반에 모르는 건 그냥 답을 보고 해결하는 방법에 익숙해지려고 노력한다) /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * t.. 2020. 8. 25. 2020.08.24 Two Sum 다른 풀이 var twoSum = function(nums, target) { let comp = {}; for(let i = 0; i < nums.length; i++){ if(comp[nums[i]] !== undefined) { console.log(comp) return [comp[nums[i]], i] } comp[target - nums[i]] = i } } 주말에 하기로 한 two sum 의 풀이는 평일인 오늘에 하게 되었다. 해당 문제에 대한 풀이를 보니, 지난번 내가 푼 방법이 'Brutal force'한 풀이라며 말 그대로 우격다짐으로 억지로 풀어낸 해답답게 엄청난 runtime과 시간 복잡도를 자랑했다. 다른 풀이가 있을까 하여 봤더니, Hash table 의 방법을 이용하는 방법이었다. 자바스.. 2020. 8. 24. 2020.08.23 TIL 사이드 프로젝트로 지금 다니고 있는 회사의 엑셀로 수기 작업하는 일들을 자동화 하는 웹 앱을 만들고 있다. 빨리 만들어서 엑셀로 3번 반복하는 일들을 줄여보고 싶은데 좀처럼 속도가 나지 않는다. 그동안 클라이언트 부분을 확실히 안한게 티가 나는 것 같다. 로그인 파트 간단한데도 하루를 꼬박썼다. 하다 보면 또 익숙해지겠지! - Formik과 Yup 을 이용해 폼의 유효성 검사를 하는데, 좀처럼 익숙해지지 않다가 마지막에 알것 같은 느낌 - typescript를 어떻게 하면 효과적으로 쓸 수 있을지 고민. 지금까진 js 와 거의 차이나지 않는다. - twoSum 금요일에 풀이를 런타임을 어떻게 줄일 수 있을지 고민하기로 했는데, 결국 시간이 나지 않아 패스 - 운동은 웨이트 1시간 20분. 예전처럼 자주 .. 2020. 8. 24. 2020.08.21 Two Sum 풀이 문제 ) 중복을 허락한 정수의 배열이 주어져서 두개의 원소를 선택해 합했을 때 타겟 숫자와 동일 할 경우, 그 두 원소의 index의 배열은 어떻게 되는가? 예를 들면, [2,4,6,11] 과 8의 타겟이 주어진다면, 2와 6이 합쳐져 8의 원소가 된다는 걸 알 수 있다. 따라서 정답은 [0, 2]가 된다는 걸 알 수 있다. 이걸 컴퓨터가 알아 들을 수 있도록 식을 구성하는 것이 알고리즘의 핵심이다. 단순히 for문을 중첩해서 답을 구했더니, 268ms 의 어마무시한 런타임을 자랑했다. var twoSum = function(nums, target) { for(let i = 0; i < nums.length - 1; i++){ for(let j = 1; j < nums.length; j++){ if(i .. 2020. 8. 22. 2020.08.20 Palindrome Linked List 풀이 문제 ) linked array 가 주어졌을 때, 해당 배열이 회문 되는 지 여부를 체크하는 문제 알아야 할 점) Palindrome 회문 : 1-2-2-1, 1-2-3-4-4-3-2-1 Math.ceil (올림), Math.floor(내림), Math.round(반올림) linked array list vs array (자바스크립트 배열 아님) : 삽입/삭제가 쉬움, 특별원소 찾을 때 O(n) Javascript Prototype (참고문헌 : 링크) 자바스크립트는 프로토타입 기반의 언어라고 한다. 어느 곳에 빈 Object 가 있고, 그 object에는 일정한 속성이 담겨 있다. 생성자를 통해서 우리는 그 object를 가져다 쓸 수 있다. 이때 객체는 언제나 함수로 생성된다. object도 사실은 .. 2020. 8. 20. 이전 1 ··· 12 13 14 15 16 17 18 ··· 27 다음