깊은바다거북
개발 공부 기록
깊은바다거북
전체 방문자
오늘
어제
  • 분류 전체보기 (219)
    • JAVA (9)
    • JavaScript (15)
    • 스파르타코딩클럽 (11)
      • [내일배움단] 웹개발 종합반 개발일지 (5)
      • [내일배움캠프] 프로젝트와 트러블 슈팅 (6)
    • SQL | NoSQL (4)
    • CS 등등 (0)
    • TIL | WIL (173)
    • 기타 에러 해결 (3)
    • 내 살 길 궁리 (4)

인기 글

최근 글

최근 댓글

태그

  • leetcode-cli
  • Inorder Traversal(중위 순회)
  • tree
  • TIT (Today I Troubleshot)
  • Preorder Traversal(전위 순회)
  • 프로그래머스
  • 코딩테스트 연습문제
  • DFS(깊이우선탐색)
  • Trie
  • POST / GET 요청
  • 트러블 슈팅 Troubleshooting
  • 최소 힙(Min Heap)
  • Binary Tree(이진 트리)
  • BST(이진 탐색 트리)
  • Til
  • 자잘한 에러 해결
  • BFS(너비우선탐색)
  • 01. 미니 프로젝트
  • TypeScript
  • 자바스크립트 기초 문법
  • 재귀 함수
  • 혼자 공부하는 자바스크립트
  • 점화식(Recurrence Relation)
  • 자료 구조
  • Linked List
  • Leetcode
  • 시간 복잡도
  • 최대 힙(Max Heap)
  • 팀 프로젝트
  • Backtracking(백트래킹)
hELLO · Designed By 정상우.
깊은바다거북

개발 공부 기록

TIL | WIL

9/20 (수) Bitwise NOT으로 Math.floor() 대체하기 TIL

2023. 9. 20. 23:03

공부한 것

  • LeetCode #212. Word Search II
    LeetCode - The World's Leading Online Programming Learning Platform
    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
    https://leetcode.com/problems/word-search-ii/description/

    보조 재귀함수를 구현하였다.

    해결해야 할 것: 첫 문자가 어느 칸에 나오는지를 찾아갈 수 있게 만들기. 한 단어가 같은 칸을 두 번 가지 못하도록 수정하기(사실 이건 거의 구현했다고 생각하는데 왜 작동을 안하는지 모르겠다).

  • 단항 비트 논리부정 연산자(Bitwise NOT) “~”

    : 숫자를 32 비트(이진수)로 나타내어 0과 1을 반전한 결과를 반환한다.

    const a = 5; // 00000000000000000000000000000101
    const b = -3; // 11111111111111111111111111111101
    
    console.log(~a); // 11111111111111111111111111111010
    // Expected output: -6
    
    console.log(~b); // 00000000000000000000000000000010
    // Expected output: 2
    
    console.log(~3.4) // -4

    x를 전환(Bitwise NOTing)하면 -(x + 1)의 값을 얻게 된다. 즉, 양수와 음수 양측으로 전환될 때 음수 쪽 절대값이 1이 더 큰 규칙이라고 보면 되겠다.

    이를 응용하여 두 번 연달아 붙이면 Math.floor() 대신으로 사용 가능하다. 더 간결하고, 속도도 더 빠르다고 한다.

    // 기존: 
    Math.floor(4.9) === 4 // true;
    // 축약기법: 
    ~~4.9 === 4 // true;

  • 옵셔널 체이닝 ?.

    : 중첩(체이닝)으로 객체의 속성에 접근하거나 함수를 호출할 때 쓰여서, 만약 중간 결과가 undefined나 null이라면 에러를 던지는 대신에 undefined를 반환하도록 한다.

    // 문법: 
    obj.val?.prop
    obj.val?.[expr]
    obj.func?.(args)
    
    const dogName = adventurer.dog?.name;
    console.log(dogName) // .dog가 정의되어 있지 않을 때 undefined;

Uploaded by N2T

    'TIL | WIL' 카테고리의 다른 글
    • 9/22 (금) 단어 검색II 문제를 Trie로 업그레이드하다 TIL
    • 9/21 (목) 불렛 저널: 기록을 집대성할 방법을 찾다 TIL
    • 9/19 (화) leetcode-cli가 거의 무용함이 드러나다 TIL
    • 9/18 (월) 와일드카드(.)를 포함한 단어를 검색할 수 있는 Trie 클래스 TIL
    깊은바다거북
    깊은바다거북

    티스토리툴바