분류 전체보기 380

[HUFS/알고리즘] #4 그리디 알고리즘(1)

그리디(Greedy) 알고리즘 그리디(= 탐욕) 알고리즘: 가능한 해들 중에서 가장 좋은 해를 찾는 최적화(optimization) 문제를 해결하는 알고리즘, 앞뒤 데이터 간 관계를 고려하지 않고 수행 과정에서 최소 or 최대값을 가진 데이터만 근시안적으로 선택 * 한 번 데이터를 선택하면 번복하지 않아서, 알고리즘이 단순하고 제한적인 문제 해결에 적합 1. 동전 거스름돈 문제 남은 액수를 초과하지 않는 조건 하에 가장 큰 액면의 동전을 취하는 방법? (500, 100, 50, 10, 1) 2. 최소 신장 트리(Minimum Spanning Tree) 주어진 가중치 그래프에서 사이클 없이 모든 점을 연결시킨 트리들 중 선분들의 가중치 합이 최소인 트리 (입력: 1개의 연결요소(connected compo..

[노마드코더] #3 CRUD

Posting Firebase에서 Firestore Database를 테스트 모드로 생성해준다 Firebase Cloud Firestore 문서🔽 Cloud Firestore | Firebase Documentation 유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 측 개발 및 서버 측 개발에 사용되는 데이터를 저장하고 동기화하세요. firebase.google.com Firestore Database는 NoSQL 형태로, collection(폴더)과 document(문서)로 구성된다 [src/fbase.js] ... firebase.initializeApp(firebaseConfig); export const firebaseInstance = firebase; export c..

Back-end/Firebase 2022.03.28

[HUFS/알고리즘] #3 분할 정복 알고리즘(2)

선택(Selection) 문제 선택 문제: n개의 숫자들 중에서 k번째로 작은 숫자를 찾는 문제 간단한 방법 최소 숫자를 찾고 제거하는 과정을 k번 반복하고 최소 숫자를 찾는다 ~ 최악의 경우 O(kn) 숫자들을 정렬하고 k번째 숫자를 찾는다 ~ 최악의 경우 O(nlogn) 선택 문제 알고리즘 * 각 그룹의 크기를 알면, k번째 작은 숫자가 어느 그룹에 있는지 알 수 있고, 그 그룹에서 몇 번째 작은 숫자를 찾아야 하는지 알 수 있다! Small group에 k번째 작은 숫자가 속한 경우: k번째 작은 숫자를 해당 그룹에서 찾는다 Large group에 k번째 작은 숫자가 속한 경우: (k – Small group의 숫자 개수 – 1) 번째로 작은 숫자를 해당 그룹에서 찾는다 선택 문제 알고리즘 과정 선..

[TIL] CRA & TypeScript 초기 세팅 (ESLint & Prettier)

1. 아래 글을 베이스로 초기 세팅을 진행해준다 [React] create-react-app & Typescript 초기 세팅 완벽 정리 최근에 타입스크립트를 배우고 타입스크립트로 create-react-app을 설정하는데 시간이 많이 걸렸다..그리고 새로 프로젝트를 시작할 때 초기세팅을 완벽하게 하자! 라고 생각을 해서 협업을 할 때 velog.io 2. EsLint와 Prettier 파일을 다음과 같이 수정해준다 [.eslintrc.js] module.exports = { parser: "@typescript-eslint/parser", plugins: ["@typescript-eslint", "prettier"], extends: [ "airbnb", "prettier", "plugin:react/..

Front-end/React 2022.03.26

[HUFS/알고리즘] #2 분할 정복 알고리즘(1)

분할 정복 알고리즘(Divide-and-Conquer) 분할 정복: 아우스터리츠 전투에서 유래된 용어로, 대상을 작게 분할해 각각 정복한다는 의미 분할 정복 알고리즘: 알고리즘 문제를 나눌 수 없을 때까지 쪼개고 각각 풂으로써 전체 답을 구하는 방식 분할된 입력에 대한 문제를 부분문제(subproblem), 부분문제의 해를 부분해라고 한다 부분 문제의 수와 크기에 따라 다음과 같은 분류가 있다 문제가 a개로 분할되고, 부분 문제의 크기가 1/b로 감소하는 알고리즘 a = b = 2인 경우: 합병 정렬, 최근접 점의 쌍 찾기 a = 3, b = 2인 경우: 큰 정수의 곱셈 a = 4, b = 2인 경우: 큰 정수의 곱셈 a = 7, b =2인 경우: 스트라센(Strassen)의 행렬 곱셈 문제가 2개로 분..

[노마드코더] #2 Authentication

Using Firebase Auth [jsconfig.json] { "compilerOptions": { "baseUrl": "src" }, "include": ["src"] } 최상단에 해당 파일을 추가하면 모든 파일 경로를 src 폴더 기준 절대 경로로 입력할 수 있다 import firebase from "fbase"; * 이름이 겹치면 import가 꼬일 수 있기 때문에 firebase.js -> fbase.js로 변경 [src/fbase.js] import firebase from "firebase/compat/app"; import "firebase/compat/auth"; ... firebase.initializeApp(firebaseConfig); export const authServic..

Back-end/Firebase 2022.03.18

[HUFS/알고리즘] #1 알고리즘과 시간 복잡도

알고리즘이란? 알고리즘(Algorithm) = 문제를 해결하기 위한 단계적인 절차 * 해결 방법은 다양하지만 가장 효율적인 방법을 찾는 것에 의의가 있다 알고리즘의 특성 정확성: 주어진 입력에 대해 올바른 해를 주어야 한다 수행성: 각 단계는 컴퓨터에서 수행 가능해야 한다 유한성: 일정한 시간 내에 종료되어야 한다 효율성: 효율적일수록 그 가치가 높아진다 유클리드(Euclid)의 최대공약수 알고리즘 = 최초의 알고리즘 알고리즘의 표현 방법 알고리즘은 프로그래밍 언어나 의사 코드(pseudo code)로 표현할 수 있다 최대값 알고리즘을 표현하는 다양한 방식.. 알고리즘의 분류 문제 해결 방식에 따른 분류 분할 정복(Divide-and-Conquer) 알고리즘 그리디(Greedy) 알고리즘 동적 계획(Dy..