TIL 2023-04-12

오성인·2023년 4월 12일
0

TIL

목록 보기
5/66
post-thumbnail

1. 오늘 겪은 문제

  1. 알고리즘 문제 - 투포인터
    투포인터

  2. JS DEEP DIVE

    • 인터프리티 언어인 JS

2. 해본 시도

  1. 투 포인터
    • 2중 포문을 통해 구현은 하였지만, 시간초과가 났다.
  2. JS DEEP DIVE
    • JS를 쓰고 있지만 막상 JS의 장단점에 깊게 고민해 본적은 없었다. 막연하게 프론트 백엔드를 오갈 수 있는 자유로운 언어 정도로 생각했던 것 같다.

3. 해결 방법

  1. 시작점, 끝점이라는 투 포인터를 사용하여 시작점과 끝점사이의 범위의 부분합을 구하는데, 부분합이 목표값보다 작은면 끝점을 올려 범위를 넓혀주고, 크다면 시작점을 올려 범위를 좁히는 식으로 판별하며 반복한다. 이렇게 할 때의 O(N)의 시간복잡도로 해결 가능하다.
  2. JS의 장점은 내가 쓸 때는 단점으로 느껴지기도 하지만 각 상황마다 가장 빠르게 처리할 수 있는 작업들을 처리해가며 또, 코드의 한줄한줄에 바로바로 응답, 대응할 수 있는 지점이라고 배우게 되었다. 다만 한개의 크고 무거운 작업이 주가 되는 상황에서는 지양하는게 좋겠다.

4. 새롭게 알게 된 점

  • 투포인터 기법에 대하여 알게 되었다. 2중 포문을 통해 완전탐색을 할 때 시간초과가 난다면 꼭 생각해 보아야 할 것 같다.
  • JS의 장단점에 대하여 알게 되었다. 또 컴파일언어보다 상대적으로 느린 인터프리터 언어인 JS가 어떻게 성능을 개선했는지도 찾아 보았다.
    -> JIT 컴파일러 기법을 가지고 만든 TurboFan이라는 컴파일러로 개선하였다!
    JIT 컴파일러 기법
    -> 자주 보지 못할법한 코드들은 인터프리터가 담당하고,
    -> 자주 쓰는 코드는 이미 최적화해 놓은 컴파일러가 컴파일 해!
profile
기여하는 개발자

0개의 댓글