[Data Structure] 해시(Hash)
·
🖥️ CS/Data Structure
현대 사회에서는 상상을 초월하는 양의 데이터가 생성되고 있습니다. 이러한 방대한 데이터를 어떻게 효율적으로 관리하고 활용할 수 있을까요? 예를 들어, 특정 데이터를 찾아야 하는 상황을 생각해봅시다. 가장 단순한 방법은 처음부터 끝까지 순차적으로 모든 데이터를 확인하는 것입니다. 하지만 이 방식은 데이터의 양이 늘어날수록 비효율적이 됩니다. 최악의 경우, 원하는 데이터를 찾기 위해 모든 항목을 일일이 확인해야 할 수도 있기 때문입니다. 이러한 문제를 해결하기 위해 고안된 자료구조 중 하나가 바로 '해시(Hash)'입니다. 해시란?해시는 특별한 함수인 '해시 함수'를 사용하여 데이터를 변환하고, 이 변환된 값을 인덱스로 활용하여 데이터를 저장하고 검색하는 자료구조입니다. 이 방식을 통해 해시는 대량의 데이터..
[SQL] 기초 문법: 데이터 조회(SELECT)
·
🖥️ CS/Database
데이터베이스에서 정보를 가져오는 것은 모든 데이터 작업의 시작점입니다. SQL의 SELECT 문은 이러한 데이터 조회 작업의 핵심입니다. 이 글에서는 SELECT 문 작성의 기본을 알아보고자 합니다. 1. SELECT 문의 기본 구조SELECT 문의 기본 구조는 다음과 같습니다:SELECT {[DISTINCT] COLUMN|EXPRESSION [ALIAS], ...}FROM TABLE;SELECT: 표시할 열(column)을 지정합니다.FROM: 데이터를 가져올 테이블을 지정합니다.[ ]: 대괄호 안의 요소는 선택적으로 사용할 수 있습니다.예를 들어, 'EMPLOYEES' 테이블에서 직원의 이름과 급여 정보를 가져오고 싶다면:SELECT FIRST_NAME, LAST_NAME, SALARYFROM EMP..
[React][i18n] 다국어 기능 구현하기 (feat. react-i18next)
·
🔥 Develop/React
최근 진행 중인 프로젝트에 다국어 지원 기능을 추가해 달라는 요청을 받았습니다.  이런 요구사항을 충족시키기 위해 i18n(Internationalization)을 도입하기로 결정했습니다. i18n은 '국제화'를 의미하는 internationalization의 줄임말로, 소프트웨어를 다양한 언어와 지역에 맞게 쉽게 적응시킬 수 있도록 하는 설계 및 개발 방식을 뜻합니다. 이 글에서는 React를 기준으로 i18n을 프로젝트에 적용하는 방법에 대해 함께 알아보고자 합니다. 사용해보기1. 준비하기먼저 필요한 패키지를 설치합니다.npm install react-i18next i18next 파일 구조는 다음과 같이 관리합니다;📂 src ├── 📂 components ├── 📂 pages ├── ..
[Javascript][Programmers] 다리를 지나는 트럭
·
🔢 Algorithm
문제이 문제는 트럭이 순차적으로 다리를 건너며, 다리 위에서의 트럭 상태(시간, 무게)를 관리해야 하는 점이 핵심입니다. 트럭을 순차적으로 처리해야하는 점을 고려하면 큐를 사용하는 것이 적합합니다. 나의 풀이function solution(bridge_length, weight, truck_weights) { let time = 0; // 경과 시간 let bridgeQueue = []; // 다리 위의 트럭 상태 관리 (트럭 무게와 남은 시간을 관리) let bridgeWeight = 0; // 현재 다리 위에 있는 트럭들의 무게 합 while (truck_weights.length > 0 || bridgeQueue.length > 0) { time++; ..
[Javascript][Programmers] 카드 뭉치
·
🔢 Algorithm
문제문제에는 다음과 같은 조건이 제시되어 있습니다.카드 뭉치에서 카드를 순서대로 사용합니다.카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.이러한 조건들을 고려해보면, 이 문제는 "선입선출(FIFO: First In, First Out)" 원칙을 따르고 있음을 알 수 있습니다. 이런 특성을 가장 잘 구현할 수 있는 자료구조는 큐(Queue)입니다.  나의 풀이시간복잡도: O(M) (cards의 길이: N, goal의 길이: M)function solution(cards1, cards2, goal) { let index1 = 0; let index2 = 0; for (let goalIndex = 0; goalIndex  다른 풀..
[Javascript][Programmers] 기능 개발
·
🔢 Algorithm
문제문제에서 제시된 조건에 따르면, 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포되어야 합니다. 이러한 요구사항은 기능들 간의 선후 관계와 의존성을 나타내며, 이를 효과적으로 관리하기 위해 큐(Queue)를 사용하는 것이 적합합니다. 나의 풀이시간복잡도: O(N)function solution(progresses, speeds) { const answer = []; // 각 작업의 완료 일수 계산 let days = progresses.map((progress, i) => Math.ceil((100 - progress) / speeds[i])); let dDay = days[0]; let count = 0; for (let day of days) { ..
[Data Structure] 큐(Queue)
·
🖥️ CS/Data Structure
큐란?큐는 '줄을 서다'라는 의미를 가지고 있습니다. 큐는 "First In, First Out" (FIFO) 원칙을 따르는 선형 데이터 구조로, 이는 먼저 들어온 요소가 가장 먼저 나가는 구조를 의미합니다. 실생활에서 큐의 예를 들자면 줄서기를 생각해볼 수 있습니다. 먼저 줄을 선 사람이 먼저 서비스를 받게 됩니다. 동작 원리큐의 기본적인 동작 원리는 다음과 같습니다.Enqueue (삽입): 새로운 요소를 큐의 후미에 추가합니다.Dequeue (삭제): 큐의 전방에서 요소를 제거하고 반환합니다.Peek: 큐의 맨 앞에 있는 요소를 조회합니다 (제거하지 않음). 큐의 ADT (Abstract Data Type)큐의 추상 자료형(ADT)은 다음과 같은 주요 연산들과 상태들을 포함합니다:연산 (Operati..
[Javascript][백준] 1158번 - 요세푸스 문제
·
🔢 Algorithm
문제이 문제의 핵심은 원형 구조를 어떻게 효율적으로 구현하고, 제거 과정을 어떻게 시뮬레이션할 것인가입니다. 나의 풀이시간복잡도: O(N²K)let fs = require('fs');let input = fs.readFileSync('/dev/stdin').toString().split('\n');function solution(N, K) { let answer = []; let queue = Array.from({ length: N }, (_, i) => i + 1); while (queue.length > 0) { // K-1번 이동 for (let i = 1; i parseInt(n));console.log("")처음에 1부터 N까지의 숫자를 포함하는 배열..
윤도기
'분류 전체보기' 카테고리의 글 목록 (4 Page)
상단으로