까먹은 지식 437

알고리즘 5강 :: 동적 프로그래밍 알고리즘 원리, 연쇄 행렬 곱셈

알고리즘 5강을 보며 배운내용 앞에서 분할정복에 대해 2강에 들었는데 동적 프로그래밍 알고리즘도 방법, 원리 특징을 2강에 걸쳐 배운다 동적 프로그래밍 알고리즘 원리 문제 크기가 작은 문제에 대해 해를 구하고, 크기가 조금 더 큰 문제의 해를 단계적으로 구해가는 상향식 접근 방법(bottom up) 작은 문제의 해는 테이블에 저장 해놓고 재사용 해를 구축하는 테이블을 이용한다고 해서 동적 프로그래밍이라 한다 소문제들 서로 독립적일 필요 없고, 중복되는 부분 존재한다 주로 최적화 문제 최적화 문제에 사용한다 최솟값, 최댓값, 피보나치 수열, 연쇄 행렬 곱셈 ... 사용하려면 최적성의 원리(Principle of optimality) 만족해야 동적 프로그래밍을 적용할 수 있다 => 주어진 문제의 최적해는 소..

알고리즘 4강 :: 합병 정렬, 선택 문제

알고리즘 4강을 보며 배운내용 분할정복 알고리즘 2탄 => 분할정복 알고리즘 1탄: 이진 탐색, 퀵 정렬 복습 순환적으로 문제를 하향식 접근으로 푼다 분할 - 정복 - 결합으로 문제를 푼다 분할된 문제는 크기만 작고 원래 문제와 같다 오늘은 합병정렬과 선택문제 합병 정렬 분할 정복 방법으로 정렬 분할, 정복, 결합을 잘 지키는 정렬 n만큼 저장장소(왼쪽배열, 오른쪽배열)가 필요하다 ⌛ 시간 복잡도 O(nlogn) ✨ 방법 분할: 동일한 크기로 나누기 정복: 부분배열을 순환적으로 정렬 결합: 합병해서 정렬된 배열 만든다 🤖 코드 // 합병 정렬 JavaScript function mergeSort(원배열, 길이) { if(n > 1) { let mid = Math.ceil(길이 / 2) let 왼쪽배열 =..

Web3 :: Blockchain developer roadmap

리액트를 배우고 있는 현재 Web3로 뛰어 들 때 도움되도록 북마크를 위한 포스트 - Fundamentals of CS - HTML and CSS - JavaScript - React - Solidity - Chai - Web3.js / ethers.js - A CSS framework - Hardhat - Alchemy - IPFS - Pinata 출처 트위터 => https://twitter.com/VittoStack/status/1497169528903680000 전체 로드맵 및 리소스 => https://vitto.cc/web3-and-solidity-smart-contracts-development-roadmap/

Web Dev/Web3 2022.02.25

알고리즘 3강 :: 분할정복, 이진탐색, 퀵정렬

알고리즘 3강을 보며 배운내용 3대 알고리즘중 하나 분할정복 방법의 원리, 특징, 단계를 알아봐야지 분할정복 방법 원리 순환적(recursively) 문제를 하향식(top-down) 접근 문제를 계속 분할하고, 해결된 값(해)를 결합해서 문제의 답을 구한다 특징 분학된 작은 문제는 원래 문제와 같다 입력 크키가 작아진 것 분할된 작은 문제는 독립적이다 그래서 반복해서 분할과 결과를 합칠 수 있다 처리 단계 분할: 문제를 여러 개의 작은 문제로 나누기 정복: 작은 문제를 더 분할되지 않을 크기가 되면 해를 구하기 결합: 정복된 해를 결합해서 원래 문제의 해(값)을 구한다 결합 단계가 없는 문제도 있다고 한다 분할 정복은 어디에 쓸까? 이진 탐색, 퀵 정렬, 합병 정렬, 선택 문제 이진 탐색 한 쪽만 조지는..

데이터베이스 1강 :: 데이터베이스 등장배경, DBMS, 시스템 아키텍처

데이터베이스 1강을 보며 배운내용 데이터베이스 강의 시청 시작 목표는 기본적인 SQL 배우기 AI 새삼 데이터베이스의 역사를 듣다보니 갑자기 AI가 등장한게 아니라는게 느껴진다 데이터를 받기 시작한 때부터 쌓이고, 신속하게 처리할 방법을 연구하고 데이터를 분석하다 보니 자연스레 등장하게 된 것 같다 다음은 뭘까? 데이터베이스 이전(🇧🇩 : Before Database) 데이터 중복 문제 데이터 중복이 많아지면, 일관성, 보안성, 경제성에서 문제 발생 무결성 훼손 문제 데이터가 가질 수 있는 가능 범위(제약조건)를 포함한다 동시 접근의 문제 동일 데이터에 다수 사용자가 접근하면 일관성 훼손된다 데이터베이스 등장(🇦🇩 : After Database) 위의 문제들을 막기 위해 데이터베이스가 나왔다 데이터 사용..

알고리즘 2강 :: 대표적인 알고리즘 3가지, 점근 성능

알고리즘 2강을 보며 배운내용 알고리즘의 정의 입출력, 명확성, 유한성, 유효성을 만족하고 효율적이어야 한다 순차탐색 처음부터 순서대로 찾는 방법 이진 탐색 반으로 나눠서 탐색 순서대로 되어있을 때 사용하면 좋다 랜덤이면 사용할 수 없다 대표적인 알고리즘 설계 기법 3가지 분할정복(divide and conquer) 동적 프로그래밍(dynamic programming) 욕심쟁이(greedy) 알고리즘 분석 정확성, 효율성 효율성 분석 메모리 양 => 공간 복잡도(space complexity) 수행 시간 => 시간 복잡도(time complexity) 메모리 적게 쓰고, 수행 시간 짧은게 좋은 알고리즘 보통 시간 복잡도만 따진다(메모리는 구하기 쉬워서) 시간 복잡도 알고리즘 단위 연산의 수행 횟수의 더해..

부트캠프 졸업 :: 80일 일지 정리 feat. 프론트엔드 로드맵

엘리스 SW 엔지니어트랙 졸업 80일간의 프론트엔드 일주 80일간의 프론트엔드 일주 엘리스 SW엔지니어트랙으로 80일간의 웹의 세계를 무사히 완주했다. 재밌게 봤던 쥘베른의 '80일간의 세계일주'과 같은 포맷이 되니 괜히 좋다 세계 일주를 겉핥기로 했던 것과 달리 부트캠프에서 배운 스킬을 제대로 사용하고 싶기에 16주간의 배운 내용을 정리해보려고 한다 목적은 1. 배운 정리 내용 2. 프론트엔드 공부 로드맵 for 독학러 3. 배운 기술 중 강화할 기술 선택 4. 새롭게 배우고 싶은 기술 요약(TL;DR) 1. HTML, CSS, Git 2. JavaScript, DOM, Node(개념) 3. 프로젝트: 간단 자기소개 페이지 4. TypeScript 5. Node.js(백엔드) 6. 프로젝트: JavaS..

Web Dev/ELICE 2022.02.23

알고리즘 1강 :: 모든 자료구조 구현은 배열과 연결리스트

알고리즘 1강을 보며 배운내용 알고리즘 준비 자료구조 프로그래밍 언어 능력 수학적 능력 이 있으면 잘 할 수 있다 컴퓨터 과학 컴퓨터로 문제를 해결하기 위한 학문 즉 알고리즘은 문제 해결을 위한 효율적인 레시피 컴퓨터로 문제를 풀기위해 알고리즘이 필요하다 자료구조 컴퓨터에서 데이터 사이 논리적 관계 표현, 조직화 자료구조, 알고리즘을 잘 이용하면 좋은 프로그램 만들 수 있다 기본 자료구조 선형 한 줄로 줄 세울 수 있는 자료구조 배열, 연결리스트, 스택, 큐 비선형 줄 세울 수 없는 자료구조 트리, 그래프 각 자료구조의 구성과, 삽입, 삭제 방법을 알자 트리, 그래프는 익숙치 않다 모든 자료구조는 배열 혹은 연결 리스트로 구현한다 아~ 단순해서 좋다 트리 노드의 차수: 각 노드가 가지고 있는 자식 노드 ..

80 :: 2차 팀프로젝트 마지막 날

엘리스 SW 엔지니어 트랙 80일차 팀 프로젝트 15일차 드디어 오늘은 2차 팀 프로젝트 마지막 날 아침부터 코치님의 피드백을 받고 주로 디자인, 작은 결핍(?)들을 고쳐가고 있다 막바지에는 브랜치를 파고, 머지하고 하는 일이 자잘자잘하게 많아지는 구나~ 점검의 시간 배포가 된 후 기능, 반응형 등 마지막 점검을 시작한다 기능이 잘 작동이 되어 조금 편한 마음으로 스타일을 이리저리 바꿔도 보고 어떻게 하면 조금 더 시선을 끌 수 있을까 생각도 해본다 참고 링크 useNavigate => https://dev.to/salehmubashar/usenavigate-tutorial-react-js-aop

Web Dev/ELICE 2022.02.20

79 :: 2차 팀 프로젝트, 다음 API, 위대한 FLEX, 뭐든지 다해요

엘리스 SW 엔지니어 트랙 79일차 팀 프로젝트 14일차 시원하게 해결 어제 새벽까지 잠이 안오게 했던 서버와의 통신 부분 속 시원하게 해결!! 문제는 간단한 문법의 실수에서 시작되기도 하는구나~ 다음 API는? 이번에 팀 프로젝트는 공공데이터를 사용한다 처음 이 API를 살펴볼 때는 데이터도 많아 보였고 꽤 자세히 되어있다고 생각했다 하지만 실제로 연결하고 받아와서 UI를 구성해보고 나니 빈 데이터도 많고 잘못된 데이터도 있었다 다음 프로젝트에서 API를 사용한다면 첫번재로, 데이터 양이 많은 것 그리고, 데이터가 똑바로 되있는지 이번 보다 더 확인! 위대한 FLEX 넓이를 정할 때 대체적으로 밑의 코드를 사용했었다 width: clamp(0px, 500px, 100%); 이유는 왠만한 어디어 붙여놔도..

Web Dev/ELICE 2022.02.18
728x90