목록2024/10 (3)
기술 블로그
1. Heap: 빠르게 찾고, 정렬하는 마법의 자료구조Heap은 최소값이나 최대값을 빠르게 찾을 수 있는 트리 기반의 자료구조입니다. Min Heap에서는 가장 작은 값이, Max Heap에서는 가장 큰 값이 루트에 위치하게 됩니다.핵심 메서드insert: 새 값을 삽입하고, 부모 노드와 비교하여 필요한 경우 위로 이동합니다 (bubble-up).extractMin (혹은 extractMax): 루트 값을 삭제하고 맨 마지막 값을 루트로 올린 후, 자식 노드와 비교하여 아래로 내려갑니다 (bubble-down).JavaScript 예시class MinHeap { constructor() { this.heap = []; } insert(val) { this.heap.push(val); ..
JavaScript에서 문자열 비교와 숫자 정렬 문제 해결JavaScript에서 숫자를 이어 붙여 가장 큰 수를 만들 때 주의해야 할 점과 효과적인 방법을 소개합니다.1. 숫자로 변환 시 정밀도 손실숫자가 매우 크면 Number 타입으로 처리할 때 정밀도가 손실될 수 있습니다. 따라서 큰 숫자를 직접 숫자로 변환해 비교하면 잘못된 결과가 나옵니다.Number("11111112111111121"); // 11111112111111120 (정밀도 손실)2. localeCompare()로 문자열 비교두 숫자를 문자열로 결합한 후 localeCompare()로 비교해 사전식으로 정렬할 수 있습니다. 이 방식은 정확한 비교를 제공합니다.("34" + "9").localeCompare("9" + "34"); // ..
문제 상황: Type Guard와 every 메서드의 한계TypeScript는 코드의 타입 안전성을 보장하기 위해 컴파일 시점에 타입을 검사한다. 이 과정에서 타입 가드와 타입 단언을 활용해 컴파일러가 타입을 정확하게 추론하도록 돕는다. 하지만 때로는 타입 가드를 사용했음에도 TypeScript가 배열의 타입을 확신하지 못하는 경우가 생긴다.예시 코드다음 예제에서 result 배열이 FileSystemFileEntry 또는 FileSystemDirectoryEntry로만 구성되어 있는지를 every 메서드를 통해 확인하고자 한다.if ( result.length > 0 && result.every(entry => isFileSystemFileEntry(entry) || isFileSystemD..