#43 몽키 패치보다는 안전한 타입을 사용하기
·
✏️ Study/🧽 JS & TS
이펙티브 타입스크립트 (댄 밴더캄 지음) 를 읽고 정리 📍요약 ✅전역 변수 사용을 지양하고, DOM에 데이터를 저장하면 안된다 (UI와 데이터를 분리) ✅내장 타입에 데이터를 저장해야 하는 경우, 안전한 타입 접근법 중 하나를 사용한다 - 타입 보강 - 확장하는 인터페이스를 만들고 단언 ✅보강의 모듈 영역 문제를 이해해야 한다 📍몽키 패치 (Monkey Patch) ✅런타임에 기존 코드를 동적으로 변경하는 것 예시 // 전역 객체에 임의의 프로퍼티 추가 document.monkey = 'Tamarin'; window.monkey = "Howler"; console.log(document.monkey); // 'Tamarin' console.log(window.monkey); // "Howler" // 내..
백준 1655 < 가운데를 말해요 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 📍알고리즘 분류 - 자료 구조 - 우선순위 큐 📍문제 풀이 1 = parent) break; this.values[parentIdx] = element; this.values[idx] = parent; idx = parentIdx; } } dequeue() { const min = this.values[0]; const end = this.values.pop(); if..
JavaScript 실행시간 측정 : performance.now()
·
✏️ Study/🧽 JS & TS
📍참고 https://developer.mozilla.org/en-US/docs/Web/API/Performance/now performance.now() - Web APIs | MDN The performance.now() method returns a high resolution timestamp in milliseconds. It represents the time elapsed since Performance.timeOrigin (the time when navigation has started in window contexts, or the time when the worker is run in Worker and Service developer.mozilla.org 📍performance.no..
#42 모르는 타입의 값에는 any 대신 unknown을 사용하기
·
✏️ Study/🧽 JS & TS
이펙티브 타입스크립트 (댄 밴더캄 지음) 를 읽고 정리📍요약✅unknown은 any 대신 사용할 수 있는 안전한 타입이다- 어떤 값이 있을 때, 그 타입을 알지 못하는 경우라면 unknown을 사용하면 된다 ✅사용자가 타입 단언문이나 타입 체크를 사용하도록 강제하려면 unknown을 사용하면 된다✅{}, object, unknown의 차이점을 이해해야 한다 📍함수의 반환값과 관련된 unknown✅함수의 반환값으로 any 대신 unknown을 사용해야 한다 any를 사용하는 경우function parseYAML(yaml: string): any { // ...}interface Book { name: string; author: string;}const book = parseYAML(` name..
백준 12865 < 평범한 배낭 > JavaScript
·
✏️ Study/⚙️ 알고리즘 & 자료구조
📍문제 링크https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)www.acmicpc.net 📍알고리즘 분류- 다이나믹 프로그래밍 - 배낭 문제 📍문제 풀이배낭 문제(Knapsack Problem) 로 알려진 유명한 문제 - 메모이제이션을 이용하지 않으면 시간이 매우 매우 오래걸린다 - DP를 이용하면 O(N * K) 로 해결 가능 데이터 수 N과, 최대 배낭의 무게 K가 주어진다. N개의 줄에 아이템의 무게 W, ..
#41 any의 진화를 이해하기
·
✏️ Study/🧽 JS & TS
이펙티브 타입스크립트 (댄 밴더캄 지음) 를 읽고 정리📍요약✅암시적 any와 any[] 타입은 진화할 수 있다- 명시적 any : 진화 없이 계속 any- any 타입의 진화 : 중간에 값이 할당되거나, 배열에 원소가 추가되면 타입이 변경되는 것 ✅any 진화는 타입 안정성에 좋지는 않다- 중간에 실수로 타입이 오염될 수 있음- 명시적 타입 구문이 바람직하다 📍변수의 타입이 any인 경우, 다른 타입으로 확장될 수 있다일반적으로 변수의 타입이 선언 시에 결정된다. 그리고 한번 정해지면 새로운 값이 추가되지 않는다- 그러나 any의 경우, 예외가 존재한다 예시) 일정 범위의 숫자를 배열에 담아 리턴하는 함수- out 의 타입이 변경된다 (any -> number[])function range(start..
Python에서 lambda로 배열을 특정 기준으로 정렬하기
·
✏️ Study/🐍 Python
📍문제 링크 https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 📍알고리즘 분류 - 그리디 📍문제 풀이 대문자로 구성된 문자열 리스트가 주어질 때, 문자열의 각 알파벳에 0 ~ 9 까지의 수를 하나 할당해서 숫자로 변환하고, 이를 모두 더한 최댓값을 구하라 자릿수가 높고 > 많이 등장 하는 순서로 9, 8, 7 .. 을 배정하면 된다 딕셔너리를 만들고, 문자열을 하나씩 순회하면서 해당 알파벳에 자릿수를 더한다 - 예를 들어 ABC 문자열이 있..
Matchers (Jest, RTL)
·
✏️ Study/Testing
📍참고 https://jestjs.io/docs/using-matchers Using Matchers · Jest Jest uses "matchers" to let you test values in different ways. This document will introduce some commonly used matchers. For the full list, see the expect API doc. jestjs.io 📍Matcher 란? ✅Jest에서 값을 다양한 방법으로 테스트하기 위해 사용 - a > b, a = b, a { expect(2 + 2).toBe(4); // 값이 같..