분류 전체보기
-
[Javascript] Scope / Closure / Hoisting (스코프와 클로저 그리고 호이스팅)언어, 프레임워크/Javascript & Typescript 2020. 7. 17. 14:35
이전 블로그에서 옮긴 글입니다 https://blog.naver.com/jaemin-jeong?Redirect=Update&logNo=221877574892 틀린 내용을 발견하시면 댓글 부탁드립니다! Scope (스코프) 변수 접근 규칙에 따른 유효 범위, 좀 더 쉽게 말하면 변수와 그 값이 유효한 범위라고 할 수 있다. Local scope(지역 스코프)에서 선언된 변수는 Global scope(전역 스코프)에서 사용이 불가능하다. 전역에서 선언된 변수 a는 지역 스코프에서 참조할 수 있으나, 지역에서 선언된 변수 b는 바깥(전역) 스코프에서 참조할 수 없다. 특정 함수 내에서 선언된 지역 변수는 전역 변수보다 우선순위가 높다 (전역 변수는 전역 스코프를 갖는다). 함수 내에서 전역 변수에 새로운 값을..
-
Node.js, Express 기본 middleware 정리백엔드/Node.js 2020. 7. 16. 15:29
static express.static은 express에서 제공하는 미들웨어 함수이다. 이 미들웨어는 정적인 파일(static file) -이미지 파일, css 파일, javascript 파일 등- 을 제공하며 serve-static 기반이다. express.static(root, [option])의 형식으로 사용하면 되고, root 인자는 정적인 자료가 제공되는 디렉터리(directory)를 나타낸다(자세한 내용은 공식 문서 참고). 만약 파일을 찾지 못할 경우, 404 에러 메시지를 보내는 대신 다음 미들웨어 함수를 실행하기 위해 next() 함수를 call 한다. // /uploads, /static 경로에 express.static 미들웨어 마운트 app.use('/uploads', express..
-
[Node.js] Node.js에 대해 얕고 넓게 알아보자백엔드/Node.js 2020. 7. 14. 02:21
'넓게'라고 써놓기는 했으나 기본적으로 알아야 되는 내용들만 포스팅할 예정입니다. 혹시 내용 중에 틀린 부분을 발견하셨다면 댓글 부탁드립니다! 0. Node.js의 탄생 배경 2008년 9월 구글은 Chrome 웹 브라우저의 베타 버전을 발표했다. 여기에 탑재된 V8 자바스크립트 엔진은 이전에 개발된 다른 자바스크립트 엔진보다 빠른 속도를 보장했다. 이러한 Chrome 웹 브라우저의 코드를 오픈 소스화 하면서 V8 자바스크립트 엔진 코드 역시 공개되었고, 이 덕분에 속도가 느렸던 기존의 자바스크립트 엔진들을 V8 자바스크립트 엔진이 대체하여 Javascript 언어 속도가 향상되었다. 이렇게 속도가 빨라진 javascript의 사용 범위는 넓어졌고, 2009년 개발자 라이언 달(Ryan Dahl)에 의해..
-
깊이 우선 탐색 알고리즘 (DFS Algorithm)알고리즘, 자료구조/정리 2020. 7. 13. 14:32
탐색 알고리즘 문제를 볼때마다 멍해지는 관계로 이번 기회에 확실히 짚고 넘어가야겠다. 이번 포스트에서는 DFS를 정리한다. DFS (Depth-first search) 미로 문제 해결 전략으로 연구된 DFS는 트리 및 그래프 구조를 탐색하는 알고리즘 기법이다. 트리의 경우엔 root node부터, 그래프의 경우엔 임의의 node부터 맨 밑까지 탐색하면 되고, 이전에 방문한 노드는 다시 방문하지 않는다. 그림으로 표현하면 아래와 같다. 일반적으로 DFS 알고리즘은 그래프 전체를 탐색하는데 사용한다. 시간 복잡도는 O(|V|+|E|)으로 그래프 사이즈만큼의 선형 시간이 걸린다. (V는 정점의 수, E는 간선의 수를 나타낸다) 즉, 정점이 늘어나는만큼 시간도 오래 걸리기 때문에, 탐색 과정이 시작 노드에서 한..
-
[Javascript] 프로그래머스 보석 쇼핑알고리즘, 자료구조/프로그래머스 2020. 7. 10. 23:27
문제 https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 풀이 과정 결론부터 말하면 이 문제는 단순 이중 for문으로 해결할 수 없다. 만약 이중 for문으로 해결하려고 한다면 정확성은 다 통과되지만 효율성에서 시간 초과될 것이다. 맨 처음 내가 작성한 코드는 아래와 같다. function solution(gems) { let result = [], minLen = 100000; let unique = [...new Set(gems)]; let gemLen = ..
-
[Javascript] 프로그래머스 큰 수 만들기알고리즘, 자료구조/프로그래머스 2020. 7. 3. 11:44
문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 어떤 숫자에서 k개 만큼의 숫자가 제거되었을 때 만들 수 있는 가장 큰 수를 구해야되는 문제이다. Greedy 알고리즘을 사용해 문제를 풀었고, 여기서 Greedy 알고리즘이란 매 순간 최선이라 판단되는 선택을 하면 가장 좋은 방법으로 문제를 해결할 수 있다라고 가정하는 아이디어에서 나온 것이다. 즉 미래는 생각하지 않고 당장 눈 앞에 닥친 문제만 생각하면 되는 것이다. 물론 이 방법으로 모든 문제가 풀리는 것은 아니지만 계산 시간이 적게 걸린다는 장점이 있기 때문에, Greedy 알고리즘으로 풀 수 있는 문제라면 이를 사용해 문제를..
-
[Javascript] 프로그래머스 프린터알고리즘, 자료구조/프로그래머스 2020. 6. 30. 16:27
문제 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린�� programmers.co.kr 대기목록 맨 앞에 있는 문서(J)를 대기목록에서 꺼낸다 → 나머지 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록 맨 마지막에 넣는다 → 그렇지 않으면 J를 인쇄한다. 솔루션 함수의 파라미터에는 문서의 중요도가 순서대로 담긴 배열 priorities, 인쇄를 요청한 문서가 현재 대기목록의 어떤 위치에 있는지를 알려주는 locati..
-
[Javascript] 프로그래머스 카펫알고리즘, 자료구조/프로그래머스 2020. 6. 29. 20:05
문제 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 �� programmers.co.kr 완전 탐색으로 분류된 문제지만 나는 완전 탐색으로 접근하진 않았다. 이 문제에서 생각해야 될 부분은 yello로 주어진 파라미터가 모두 카펫 안에 들어가야 된다는 것이다. 풀이 과정 function solution(brown, yellow) { let answer = []; // row: 카펫의 가로길이, col: 카펫의 세로길이 // row >=..