본문 바로가기

전체 글79

이벤트 이해하기 events 모듈을 사용하여 MyEvent라는 객체를 만들었고 객체에는 이벤트 관리를 위한 메서드들이 있다. on(이벤트명, 콜백): 이벤트 이름과 이벤트 발생 시 의 콜백을 연결해줌 - 이벤트 리스닝 addListener(이벤트명, 콜백): on과 기능이 같음 emit(이벤트명): 이벤트를 호출 once(이벤트명, 콜백): 한 번만 실행되는 이벤트 removeAllListeners('이벤트명'): 연결된 모든 이벤트 리스너를 제거 removeListener(이벤트명, 리스너): 연결된 리스너를 하나씩 제거 off(이벤트, 콜백): removeListener과 기능이 같다. listenerCount(이벤트명): 연결된 리스너 개수 확인 예시코드) const EventEmitter = require('ev.. 2019. 10. 19.
요청과 응답 이해하기(서버구현) 서버구현 const http = require('http'); http.createServer((req, res) => { res.write('Hello Node!'; res.end('Hello server!'); }).listen(8080, () => { console.log('8080번 포트에서 서버 대기 중입니다!'); }); //listen 메서드에 콜백 함수를 넣는 대신, listening 이벤트 리스너를 붙여도 된다. // -> server.listen(8080); server.on('listening', () =>{ console.log('8080번 포트에서 서버 대기 중입니다!'); }); server.on('error',(error)=>{ console.error(error); }); 명.. 2019. 10. 19.
예산(프로그래머스, Java) 문제링크: https://programmers.co.kr/learn/courses/30/lessons/43237 코딩테스트 연습 - 예산 | 프로그래머스 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정합니다. 1. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정합니다. 2. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 programmers.co.kr 알고리즘 설명 빠르게 예산에 맞는 상한 값을 찾아내는 것이 핵심이다.. 2019. 10. 19.
프림 알고리즘(Prim's algorithm) 프림 알고리즘이란? 가중치가 있는 연결된 그래프의 모든 꼭짓점을 포함하면서 각 변의 비용의 합이 최소가 되는 부분 그래프인 트리, 즉 최소 비용 생성나무를 찾는 알고리즘 그래프에 간선이 많이 존재하는 밀집 그래프인 경우 적합하다. 시간 복잡도 - O(ElogV), 그래프가 충분히 뺵빽한 경우 피보나치 합을 이용하여 더 빠르게 값을 구할 수 있다. 설명 그래프에서 하나의 노드를 선택한 후 트리를 만든다. 그래프의 모든 간선이 들어있는 집합을 만든다. 모든 노드들을 방문하기 전까지 반복 ->트리 자체와 연결된 간선들 중에서 가중치가 가장 작은 간선을 선택 후 연결되어 있는 노드로 넘어감. 반복이 끝났을 때 최소비용 신창트리가 완성! 관련 문제 섬 연결하기 - https://eoghks0521.tistory... 2019. 10. 17.
버퍼와 스트림 이해하기 Buffer(버퍼를 직접 다룰 수 있는 클래스) 클래스의 메서드 종류 from(문자열): 문자열을 버퍼로 바꿀 수 있다. toString(버퍼): 버퍼를 다시 문자열로 바꿀 수 있다. concat(배열): 배열 안에 든 버퍼들을 하나로 합칩니다. alloc(바이트): 빈 버퍼를 생성 ※ readFile()방식의 버퍼가 편리하기는 하지만 문제점 존재한다. 문제점: 용량이 100MB인 파일을 읽을 때 100MB의 버퍼를 만들어야 된다.(너무 많은 메모리를 잡아먹음) 또한 모든 내용을 버퍼에 다 쓴후에 다음 동작으로 넘어가므로 읽기, 압축, 쓰기 등의 조작을 연달아 할 때 매번 전체 용량을 버퍼로 처리해야 다음 단계로 넘어갈 수 있다. 스트림: 버퍼의 크기를 작게 만들어 여러 번에 나눠서 보내는 방식 예시) .. 2019. 10. 17.
섬 연결하기(프로그래머스, Java) 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 | 프로그래머스 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 알고리즘 설명: 가장 cost가 싼 간선으로 모든 노드를 연결하는 알고리즘이다. 양 방향으로 간선의 cost값을 알기 위해서 배열을 사용하여 두 방향 (A -> B, B -> A)의 cost를 넣어놓았다. 노드 0부터 탐색을 시작한다. 0부터 시작하므로 visited[0] = true 메서드 재귀호출하여 탐색한다. 재귀호출은 노드(섬)의 개수만큼 호출을 하고 변수 count를 만들어 재귀 호출한 횟수를 체크한다. 이중 for문으로 탐.. 2019. 10. 16.