공부의 숲 프로젝트 회고록
·
프로젝트
프로젝트 개요공부의 숲에서 스터디를 만들어서 습관들을 관리하고 기록을 볼 수 있습니다. 담당 작업백엔드오늘의 습관 수정const modifyHabits = async (data) => { const habits = data.habits; const result = []; await Promise.all( habits.map(async (habitElement) => { if (habitElement.id) { const isHabit = await prisma.habit.findUnique({ where: { id: habitElement.id }, }); if (isHabit) { // update ..
무빙(Moving) - 이사 서비스 프로젝트 회고록
·
프로젝트
배포 주소 프론트: https://5-favmoving-team2-fe.vercel.app/백엔드: https://thehun-ideas-operates-invisible.trycloudflare.com/ 개요 이사 시장에서는 무분별한 가격 책정과 무책임한 서비스 등으로 인해 정보의 투명성 및 신뢰도가 낮은 문제가 존재합니다. 이러한 문제를 해결하기 위해, 소비자가 원하는 서비스와 주거 정보를 입력하면 이사 전문가들이 견적을 제공하고 사용자가 이를 바탕으로 이사 전문가를 선정할 수 있는 매칭 서비스를 제작합니다. 이를 통해 소비자는 견적과 이사 전문가의 이전 고객들로부터의 후기를 확인하며 신뢰할 수 있는 전문가를 선택할 수 있고, 소비자와 이사 전문가 간의 간편한 매칭이 가능합니다. 일정2025.05..
누적합 알고리즘을 간단히 정리해보자
·
알고리즘
누적합 알고리즘은?배열, 리스트 일정 구간까지의 합을 빠르게 계산하도록 미리 계산된 합의 결과를 저장해두는 방식.[여러 번 구간 합을 계산해야할 때 사용] 사용할 수 있는 조건- 배열이 반드시 정적 배열이어야 함. (변하지 않는 배열) const A = [3, 1, 4, 1, 5];const prefix = [A[0]];for (let i = 1; i i === 0 ? prefix[j] : prefix[j] - prefix[i - 1];console.log(sum(1, 3)); // 1 + 4 + 1 = 6 1차원 배열이 주어졌을 때는 기준 점의 왼쪽을 보면 되기 때문에 prefix[i] = prefix[i-1]+A[i] 와 같은 식을 사용하여 더해나갑니다. 만약 누적합 없이 계산해야한다면 시간 복잡..
그리디 알고리즘은 무엇이고 어디에 써야할까?
·
알고리즘
그리디 알고리즘이란?현재 상황에서 가장 최적의 선택을 하는 알고리즘 (미래를 고려하지 않음) 그리드 알고리즘으로 문제를 푸는 방법문제를 읽고 항상 현재 상황에서 최적의 선택을 하면 전체적으로도 최적의 선택이 될 수 있을까를 고려한다.탐욕 조건(Greedy Chocie Property)과 최적 부분 구조(Optimal Substructure)가 있는 지 확인한다.탐욕 조건: 현재 상황에서 당장 최선이라고 생각한 선택이 결과적으로 전체에서도 최선의 선택이 된다는 성질최적 부분 구조: 전체 문제의 최적해(optimal solution)가 부분 문제의 최적해(optimal sub-solutions)로 구성될 수 있는 성질정렬 또는 우선순위 설정가장 좋은 선택을 판단할 기준을 설정한다.기준에 맞게 데이터를 정렬 ..
이분 탐색 알고리즘의 원리는 무엇이고 어떤 문제에서 사용할까?
·
알고리즘
이분 탐색의 정의정렬된 배열에서 특정 값을 빠르게 찾아내는 알고리즘입니다.절반씩 나눠서 탐색하는 특징이 있고, 시간 복잡도는 O(log N) 입니다.N이 100만개 있을 때 20의 시간 복잡도를 가진다고 합니다. 전제 조건배열이 반드시 정렬 되어있어야 하는데, 오름차순인지 내림차순인지는 상관이 없지만 일반적으로 오름차순을 사용합니다. 일반적인 형태 (기본 형태 - JavaScript)function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; while (left 코드를 보면 arr와 target을 파라미터로 받고 있습니다.arr는 값을 찾을 배열을 의미하고, target은 배열 안에서 찾아낼 값을 의미합니다. lef..
독스루 프로젝트 회고록
·
프로젝트
깃허브 주소https://github.com/CodeitFS5th-middle-project-team1 CodeitFS5th-middle-project-team1CodeitFS5th-middle-project-team1 has 3 repositories available. Follow their code on GitHub.github.com배포 주소(프론트)https://doc-thru-fe.vercel.app/(백엔드)https://docthru-be-wstf.onrender.com/ 프로젝트 주제대다수의 개발 시장 콘텐츠가 영어로 작성되어 있어, 영어를 잘 하지 못하는 한국인들이 해당 기술을 습득하는데 어려움을 겪고 있습니다. 그래서 개발 관련 영어 문서를 여러 사람들과 함께 한글화 작업을 하는 챌린..
Git의 3가지 작업 영역을 알아보자!
·
협업/Git
Git의 3가지 작업 영역 1. Working Directory실제 우리가 작업하는 프로젝트 디렉토리를 의미합니다.    2. Staging Area[git add]한 폴더들이나 파일들이 존재하는 영역을 의미합니다.    3. Repository보통 우리가 Github사이트에서 Repository 생성을 하죠? 그 Repository를 의미합니다.커밋이 완료되면 Staging Area에 있던 것들이 Snapshot 형식으로 Repository에 저장됩니다.
var과 let, 그리고 const의 차이점은 무엇일까?
·
개발/JavaScript
선언 방법/* var 타입 */var name = '이동혁';/* let 타입 */let old = '27';/* const 타입 */const id = 'hyuk'; var Scope 관점 변수가 함수 내에서만 유효합니다. function () { var x=10;}console.log(x); // 유효하지않음  Hoisting 관점변수 선언은 최상단으로 올려지지만, 값은 hoisting 되지 않습니다. console.log(x); // undefined 출력var x = 100;   재선언 / 재할당 관점재선언이 가능하고, 변수의 값을 변경(재할당)할 수 있습니다. var x = 10;var x = 100;console.log(x); // 100 출력   let Scope 관점블록 Scope 관점으로..
브라우저의 동작 방식을 낱낱이 파헤쳐 보자!
·
개발/WEB
브라우저란?인터넷을 통해 웹 자원을 검색하여 사용자에게 보여주는 소프트웨어입니다.    브라우저 동작 순서 1. 사용자가 브라우저 주소창에 웹페이지 정보를 입력합니다.이때 주소창에 입력할 내용은 이런 구조로 이루어져있습니다. 2. DNS 서버에서 도메인 주소를 아이피로 변환하여 줍니다. (DNS란 Domain Name System의 약자입니다.)   3. 해당 아이피의 웹서버와 연결하여 필요한 정보를 제공받습니다. 제공받는 정보에는 HTML, CSS, JAVASCRIPT 등이 있습니다.웹 브라우저는 그 정보를 통해 웹사이트 내의 구성요소들을 배치합니다.  4. 브라우저가 사용자 화면에 웹 사이트를 보여줍니다.  사용자 관점에서 브라우저와 실제 동작의 차이사용자 관점에서는 단순히 주소를 입력하면 1초도 되..
서버와 클라이언트가 도대체 뭔가요?
·
개발/WEB
서버 (Server)서버란 정보를 제공하는 컴퓨터를 의미합니다.    클라이언트 (Client)클라이언트란 정보를 제공받는 컴퓨터(브라우저)를 의미합니다.   예시우리가 웹 브라우저의 주소창에 "https://www.naver.com"을 입력했다고 해보죠.그러면 브라우저에서 웹 페이지 정보를 네이버 회사의 서버 컴퓨터에게 정보를 요청하게 됩니다.클라이언트가 서버에게 정보를 요청한 것이죠. 그다음, 서버 컴퓨터에서는 요청받은 정보를 브라우저에게 전달합니다.브라우저는 그 뒤에 받은 정보를 출력하게 됩니다.     서버는 클라이언트가 될 수 없나요? 아니요, 클라이언트가 될 수도 있습니다.예를들어 [브라우저 - 웹서버 - DB서버] 가 있다고 가정해봅시다.브라우저가 회원의 정보를 웹서버에 요청하면,웹서버에서는..