전체 글 312

확장된 유클리드 호제법 (gcd)

이전의 유클리드 호제법으로 최대공약수를 구하는법을 알았다 유클리드 호제법 이론 (최대 공약수 구하기) 즉, a, b의 최대공약수와 b, r의 최대공약수가 같음을 이용해서 최대공약수를 빠르게 구하는 방법이다. 예를들어 78696과 19323의 최대 공약수를 구하고자 한다면 78696 = 19323 * 4 + 1368 19323 = 1368 * 14 +.. fullfish.tistory.com 더 나아가서 이를 이용해서 a, b의 최대공약수와 함께 이 최대공약수가 되기위해서 a에 몇을 곱하고 b에 몇을 곱해야하는지 구해보자 gcd(a,b) = a * x + b * y 이러한 형식으로 표현되는데 x와 y를 구하는것이다 이전의 78696과 19332의 경우로 확장된 유클리드 호제법을 사용해 보겠다 78696 =..

유클리드 호제법 이론 (최대 공약수 구하기)

즉, a, b의 최대공약수와 b, r의 최대공약수가 같음을 이용해서 최대공약수를 빠르게 구하는 방법이다. 예를들어 78696과 19332의 최대 공약수를 구하고자 한다면 78696 = 19332 * 4 + 1368 19332 = 1368 * 14 + 180 1368 = 180 * 7 + 108 180 = 108 * 1 + 72 108 = 72 * 1 + 36 72 = 36 * 2 + 0 최대공약수가 36가 된다 위의 예시를 보면 알겠지만 a와 b의 최대 공약수를 구할때 a에다가 b를 나눈 몫에 나머지를 나누는것을 나머지가 0이 될때 까지 반복하면 된다. 확장된 유클리드 호제법과 코드 확장된 유클리드 호제법 (gcd) 이전의 유클리드 호제법으로 최대공약수를 구하는법을 알았다 유클리드 호제법 이론 (최대 공..

**연산자에대한 고찰

**연산자는 거듭제곱을 해주는 연산자이다 2^50을 2**50으로 쓸 수 있다. 나는 2**50은 let result = 1; let base = 2; for (let i = 0; i < 50; i++) { result *= base; } 과 마찬가지로 50번 반복을 할 줄알았는데 for 반복문, **연산자와 내가 쓴 거듭제곱의 시간복잡도를 O(logN)으로 줄이는 알고리즘 거듭제곱 시간복잡도 줄이기 거듭제곱이란 base^exponent의 형태인데 예를들어 2^50이면 2를 50번 곱하는것이며 반복되는 횟수는 50번이다 for문으로 나타낸다면 let result = 1 for(let i = 0 ; i < exponent; i++){ result *= base } consol.. fullfish.tisto..

리펙토링 및 개선 - 3 / Bcrypt 적용

Bcrypt에 대해 내가 쓴 글 https://fullfish.tistory.com/123?category=1054038 Hash와 Salt 그리고 Bcrypt 기본 용어 hash : 다양한 길이를 가진 데이터를 고정된 길이의 데이터로 매핑하는것 digest : hash에 의해 암호화된 데이터 avalanche(눈사태) 효과 : 작은 변화에도 결과가 완전히 달라짐 rainbow 공격 : fullfish.tistory.com 주요 개념을 위에 정리해뒀으며 서버단에서 적용은 // signUp bcrypt.genSalt(13, async function (err, salt) { bcrypt.hash(password, salt, async function (err, hash) { userInfo.password..

리펙토링 및 개선 - 2 / 잡다한 버그 해결

trip 정보 새로고침시에만 나오는것 해결 -> 처음 정보 받아올 때 header부분에 token정보 안 받아 오고있었음 로그인정보나 토큰정보같은것들이 localstorage에 있길래 sessionstorage로 옮김 왜냐하면 해당 정보들은 영구적일 필요가없고 탭을 닫으면 소멸해야할 정보기에 리프레쉬토큰 적용. 서버에서 엑세스토큰이 온다면 클라이언트단의 sessionstorage의 토큰정보를 업데이트함

Hash와 Salt 그리고 Bcrypt

기본 용어 hash : 다양한 길이를 가진 데이터를 고정된 길이의 데이터로 매핑하는것 digest : hash에 의해 암호화된 데이터 avalanche(눈사태) 효과 : 작은 변화에도 결과가 완전히 달라짐 rainbow 공격 : 공격자가 rainbow table을 이용해서 원본 데이터 찾는것 rainbow table : 원본 데이터와 매칭되는 digest들을 모아놓은 테이블 salt : digest 생성시 추가하는 임의의 문자열 brute force : 무차별 대입 공격 개념 hash란 일반적으로 자료구조에서 검색을 할때는 선형적으로 검색하므로 시간복잡도가 O(n)이다. 해시를 쓰면 John Smith를 특정 해시함수를 통해 나온 값을 (여기서는 02)인덱스로 사용해서 저장한다 그러므로 시간복잡도가 O(..

17개 문제 풀이 모음

해당 pdf의 17개 문제를 풀었다 // !세 수 중 최솟값 // let input1 = [6, 5, 11]; // let min = input1[0]; // input1.forEach((ele) => { // if (ele < min) min = ele; // }); // console.log(min); // 아래처럼 해도 됨 // console.log(Math.min(...input1)); // !삼각형 판별하기 // let input2 = [6, 7, 11]; // // let input2 = [13, 33, 17]; // max = Math.max(...input2); // let total = input2[0] + input2[1] + input2[2]; // let remainder = tot..

코드스테이츠 파이널 프로젝트 완료

클라이언트 주소 https://just-moment-trip.ml/ just-moment-trip just-moment-trip.ml Git https://github.com/codestates/just-moment-trip GitHub - codestates/just-moment-trip Contribute to codestates/just-moment-trip development by creating an account on GitHub. github.com 사이트 맵 Wire frame https://wireframe.cc/pro/pp/31bd8a1dd539807 Home - Wireframe.cc Preview Lorem ipsum dolor sitammet quam Lorem ipsumdolo..