항해99 (46) 썸네일형 리스트형 [항해99]TIL_몽구스 컬렉션 이름 뒤에 붙는 's' 1. 몽구스를 통해 데이터를 저장하면 컬렉션 이름 끝에 's'가 붙는다. 그러나 goods와 같이 s로 끝나는 단어에는 s가 추가되지 않아 일관성이 떨어진다. 2. 아래의 코드를 추가하면 컬렉션 뒤에 붙은 's'를 없앨 수 있다. mongoose.pluralize(null); [항해99]TIL_비밀번호 해싱 1. 주특기 시작 항해 4기 3주차가 시작됐다. 타이트한 커리큘럼 탓인지 100명 중 30여명이 벌써 중도하차를 했다. 스스로에게 다음 하차는 내가 될 수 있다는 공포분위기를 조성하며 느슨해진 책상에 긴장감을 준다. 2. TIL 이번주 부터 3주간 주특기인 Node.js를 익히는 시간이다. 이번주 과제는 Node.js와 express로 "로그인 기능이 없는 블로그 만들기" 로그인 기능은 없지만 게시물 수정과 삭제에 암호를 대조하도록 요구하고 있어 오늘은 비밀번호 보안 대해 공부해보았다. 1. 비밀번호는 평문으로 저장하지 않으며 해싱하여 저장한다. 해싱을 통해 패스워드 ex)"1234"를 넣어서 ex)"1q2w3e4r5t"와 같은 지정된(고정된) 값으로 변환할 수 있다. 해싱은 단방향으로만 작동하기 때문에.. [항해99]WIL(2주차)_ECMAScript, ES5~ES6 1. ECMAScript란 크로스 부라우징 이슈를 해결하기 위한 JS의 표준안을 ECMAScript라 한다. 넷스케이프는 Javascript를, 마이크로소프트는 JScript를 개발했는데 두 언어는 서로 호환성 문제가 있었다. 이를 해결하기 위해 자바스크립트를 ECMA(European Computer Manufacturers Association)라는 비영리 기구를 통해 표준화한다. 2. ES5, ES6의 차이 Primivie Type의 추가 버전 ES5 ES6 발표 2009년 2015 데이터 타입 string, number, boolean, null, and undefined. 원시타입에 symbol 추가 변수의 선언 var. let(변수) const(상수) Classes 추가 새로운 키워드로 Clas.. [항해99]TIL_알고리즘5 문제1 : 하샤드 수 1.1 풀이 - 정수 x의 자릿수 합을 만들어야한다. 이를 위해 String()과 split()을 활용 x를 배열로 만들어 나눈다. - reduce()를 활용, num에 누산한다. - 삼항연산자를 활용, 정수 x와 누산한 값num을 나눴을때 ? 떨어지지 않으면 false : 나눠 떨어지면 true function solution(x) { let arr = String(x).split(''); let num = arr.reduce((a, b) => a + parseInt(b), 0); return x%num ? false : true } 1.2 반복문 활용한 풀이 function Harshad(n){ var result ; var sum = 0; var arr = String(n).s.. [항해99]TIL_알고리즘4 문제1 : 정수 제곱근 판별 1.1 풀이(오답) - 제곱근을 구하는 Math.sqrt()를 이용 num을 초기화 - 양의 제곱근 중 가장 작은 정수가 2라는 점을 이용, - num이 2와 같거나 크다면 Math.pow를 이용 num+1에서 제곱하였으나 아래와 같은 오답이 존재 1) num으로 정수가 아닌 값이 출력되는 경우 (ex : 3.123412412...) 2) solution(1)을 실행하는 경우 function solution(n) { let num = Math.sqrt(n); return num/1 >= 2 ? Math.pow(num+1, 2) : -1; } 1.2 풀이(수정) - num을 1로 나눈 나머지가 0인지 확인하여 정수 여부를 체크 function solution(n) { let n.. [항해99]TIL_알고리즘3 문제1 : 문자열 내 p와 y의 개수 1.1 풀이 - 대문자와 소문자가 섞여있기 때문에 toUpperCase()를 사용, 모두 대문자로 바꾼다. - split()을 통해 P 기준으로 문자열을 분해하고 그 길이를 계산한다. - split()을 통해 Y 기준으로 문자열을 분해하고 그 길이를 계산한다. - 삼항연산자를 통해 참 거짓을 출력한다. function solution(s){ return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length ? true : false } 1.2 다른 방법 function numPY(s){ var result = true; s = s.toUpperCase(); var num = 0; for(var.. [항해99]TIL_알고리즘2 💻 알고리즘 2일차 JavsScript 1번 문제 : 핸드폰 번호 가리기 1.1 풀이 : repeat(), slice() 메서드 사용 function solution(phone_number) { let result = "*".repeat(phone_number.length -4) + phone_number.slice(-4); return result; } // (파라미터의 길이 -4만큼 문자 "*"을 입력) + (파라미터의 마지막 4자리를 분리) = *******1234 1.2 정규식을 이용한 풀이 (코드는 최대한 간결하게 짜는게 좋다지만.. 오히려 정규식이 알아보기 어려울지도?) function solution(s) { return s.replace(/\d(?=\d{4})/g, "*"); } 2번 문제.. [항해99]TIL_알고리즘1 1. 2주차 학습 내용 : 주특기 언어를 활용한 알고리즘 학습 항해에서 큐레이션한 28개의 알고리즘 문제를 학습하고 팀원에게 풀이과정을 설명한다. 2. 문제1 : 직사각형 별찍기 가. 문제 설명 나. 문제 풀이 - repeat() 메소드를 사용해 n번 만큼 문자열을 반복하여 붙인뒤 반환한다. process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { // 터미널에서 데이터를 받아온다 const n = data.split(" "); // 데이터를 n이라는 상수로 선언 후 " "을 기준으로 배열을 나눈다. const a = Number(n[0]), b = Number(n[1]); // 첫 번째 배열은 a, 두 번째 배열은 b const row.. 이전 1 2 3 4 5 6 다음