본문 바로가기

분류 전체보기138

[Javascript] 객체 수정시 원본이 변경되는 문제(얕은 복사와 깊은 복사) 자바스크립트의 값의 종류는 원시값과 참조값이 존재한다. Boolean, String, number, null, undefined : 원시값 Object, Array : 참조값 원시값의 경우 새로운 변수에 할당시 값 자체가 할당되고, 참조값은 값의 주소가 할당된다. 그러므로 새로운 변수에 할당 후 수정하면, 객체나 배열의 경우 원본의 값이 변경되어버린다. const obj = {'a': 1, 'b': 2}; const tempObj = obj; tempObj.a = 3; console.log(obj); // {'a': 3, 'b': 2} 문제 문제는, formData의 변경이 필요할때 등 원본을 보존하는 복사가 필요한 경우가 생긴다. 예를 들면, 아래와 같은 form 데이터가 있다. formData = {.. 2021. 5. 6.
[LeetCode] Palindrome Linked List (javascript) 연결리스트가 펠린드롬인지 확인하는 문제다. 배열로 변환하는 꼼수를 써서 풀었으므로.. 좀 더 문제의 의도에 맞는 풀이를 생각해 봐야겠다. /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} head * @return {boolean} */ var isPalindrome = function(head) { // 꼼수 풀이긴 하다... // 배열로 변환한다. const arr = toArray(head); // 0개, 1.. 2021. 2. 26.
[LeetCode] Merge Two Sorted Lists (javascript) 연결 리스트 두 개를 값이 작은 순서대로 정렬하여 합친다. 두 리스트는 이미 정렬되어 있으므로, 값을 비교해서 작은 값을 새 리스트에 추가해 나가면 된다. /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */ var mergeTwoLists = function(l1, l2) { // 빈 리스트가 있다면 합칠 필요가 없다. if(!.. 2021. 2. 26.
[LeetCode] Reverse Linked List (javascript) 연결리스트 뒤집기. 좋은 풀이는 아니라고 생각하지만.. 배열로 변환한 후 새로운 리스트를 만드는 방식으로 품. /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} head * @return {ListNode} */ var reverseList = function(head) { if(head==null) return head; let items = []; let curr = head; while(curr){ items.. 2021. 2. 26.
[LeetCode] Remove Nth Node from End of List (javascript) 뒤에서 n번째 노드 삭제하기. 우선 리스트 길이를 구한 후 삭제할 노드의 인덱스에 다다르면 삭제하는 방법으로 풀었다. /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} head * @param {number} n * @return {ListNode} */ var removeNthFromEnd = function(head, n) { var curr = head; var prev, index = 0; // ListNo.. 2021. 2. 26.
[LeetCode] Delete Node in a Linked List (javascript) 주어진 노드를 삭제하는 간단한 문제다. 삭제할 노드가 이미 주어져 있으므로 주어진 노드의 현재 값(val)에 next를, 주어진 노드의 next 값에 next.next를 할당하면 된다. /** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} node * @return {void} Do not return anything, modify node in-place instead. */ var deleteNode = function(node) { // val과 next만 정의해주면 되므로, // node.val(현재 값)은 .. 2021. 2. 26.
[LeetCode] Longest Common Prefix (javascript) 공통으로 겹치는 문자열을 찾아내는 문제다. /** * @param {string[]} strs * @return {string} */ var longestCommonPrefix = function(strs) { let result = ''; if(strs.length 2021. 2. 26.
Binary Tree 보호되어 있는 글 입니다. 2021. 2. 22.
Linked List 보호되어 있는 글 입니다. 2021. 2. 22.