본문 바로가기

반응형

전체 글

그리디 알고리즘 그리디 알고리즘이란 "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자" 라는 모토를 가지는 알고리즘 설계 기법이다. 그리디 알고리즘은 매 선택이 그 순간에 대해서는 최적이지만, 종합적으로 봤을 땐 최적이라는 보장은 절대 없다는 것을 명심해야 한다. 사용되는 알고리즘문제에는 거스름돈 문제, minimum spanning tree, 다익스트라 알고리즘, 허프만 코딩 등이 있습니다. 그리디 알고리즘 중 가장 많이 사용되는 거스름돈 문제에서 동전 단위가 달라져 버리면, 최적의 조건을 구하기 어려워지는데, 이럴 때는 다이나믹 알고리즘을 사용해야 합니다. 그리디 알고리즘을 풀기 위해서는 '정렬' 이 필수입니다. 매 순간 최적(최저) 조건을 만족하기 위해서는 정렬이 당연히 필수겠죠? 그리.. 더보기
동적계획법 - 다익스트라 알고리즘 최단거리 알고리즘으로 알려진 다익스트라 알고리즘에 대해서 공부해보았습니다. 다익스트라 알고리즘을 푸는 방법에는 최소 우선 큐를 사용하느냐와 안사용하느냐 두 가지 방법이 있다.최소 우선큐를 사용하지 않으면 시간복잡도가 O(V2)가 나오는 반면, 최소 우선 큐를 쓰면 O(E+VlogV) 시간복잡도가 나오기 때문에 최단 경로 알고리즘 중 점근적으로 가장 빠른 알고리즘이라고 한다. 알고리즘 간략 요약 1. 모든 꼭짓점을 미방문 상태로 표시 - 모든 미방문 꼭짓점의 집합을 만든다.2. 모든 꼭짓점에 시험적 거리 값을 부여한다. 초기점은 0으로, 다른 모든 꼭짓점은 무한대로 설정한다. (초기점은 현재 위치)3. 현재 꼭짓점에서 미방문 인접 꼭짓점을 찾아 시험적 거리를 현재 꼭짓점에서 계산4. 새로 계산한 시험적 거.. 더보기
anaconda(가상환경)를 이용한 gensim과 konlpy 설치 순서 1. anaconda 설치 2. Spyder 실행 3. 새로운 가상환경 생성$ conda create -n $ENVIRONMENT_NAME python=3 anacondaor$ conda create --n $ENVIRONMENT_NAME python=X.XX ** 가상환경 삭제$ conda remove -n $ENVIRONMENT_NAME --all 4. 가상환경 목록 보기$ conda info --envs 5. 이미 생성한 가상환경에 패키지 추가 설치$ conda install -n $ENVIRONMENT_NAME [패키지 이름] 6. 환경으로 들어가는 콘다 명령$ source activate $ENVIRONMENT_NAME안되면$ conda activate $ENVRIONMENT_NAME 7. 기존.. 더보기
MongoDB 사용하기 몽고디비 설치가 끝나셨다면, 몽고디비를 사용할 수 있도록 mongodb 모듈을 불러옵니다. 모듈을 불러들이면서 동시에 그 객체 안에 들어있는 MongoClient 속성을 참조할 수 있습니다. 이 객체를 사용해 몽고디비를 사용할 수 있습니다. var MongoClient = require('mongodb').MongoClient;var database;function connectDB(){ var databaseUrl = 'mongodb://localhost:27017/local'; MongoClient.connect(databaseUrl, function(err, db){ if(err) throw err; console.log('데이터베이스 연결되었습니다: '+databaseUrl); database=d.. 더보기
미들웨어 사용하기 이전 글에서는 use() 메소드로 설정하는 미들웨어 함수 안에 코드를 직접 넣어 클라이언트로 응답을 전송해 보았습니다. 개발자를 위한 몇 가지 기본 미들웨어에 대해서 더 알아 보겠습니다! 1. static 미들웨어먼저 static 미들웨어는 특정 폴더의 파일들을 특정 패스로 접근할 수 있도록 만들어 줍니다. 밑의 코드는 [public] 폴더에 있는 모든 파일을 웹 서버의 루트 패스로 접근할 수 있도록 만들어 줍니다. var static = require('serve-static');...app.use(static(path.join(__dirname, 'public'); static 미들웨어는 외장 모듈로 만들어져 있기 때문에 설치가 필요합니다. 커맨드 창에 $ npm install serve-static.. 더보기
클라이언트 요청시 서버 개념들 클라이언트가 웹 서버에 요청할 때 발생하는 이벤트 처리하기만약 웹 브라우저가 이 웹 서버에 접속한 후 데이터를 요청하면 그때마다 적절한 이벤트가 발생하므로 다양한 상황에 맞추어 콜백함수를 각각 등록하면 된다. 다음은 서버 객체에서 사용할 수 있는 주요 이벤트들이다. 이벤트 이름 설명 connection 클라이언트가 접속하여 연결이 만들어질 대 발생하는 이벤트입니다. request 클라이언트가 요청할 때 발생하는 이벤트입니다. close 서버를 종료할 때 발생하는 이벤트입니다. 웹 브라우저와 같은 클라이언트가 웹 서버에 연결되면 connection 이벤트가 발생합니다. 그러므로 on() 메소드를 호출할 때 첫 번째 파라미터로 connection 이벤트 이름을 전달하고, 두 번째 파라미터로 콜백함수로 전달합.. 더보기
노드의 기본 기능 알아보기 - 이벤트, 파일읽기 노드로 프로그램을 만들기 위해서는 몇 가지 기본적인 내용을 알아두는 게 좋다.이벤트가 무엇인지, 파일은 어떻게 다루는지 등을 알아야 노드로 프로그래밍을 할 때 두려움이 사라진다. 1. 이벤트노드는 대부분 이벤트를 기반으로 하는 비동기 방식으로 처리한다. 예를 들어, 어떤 함수를 실행한 결과물도 이벤트로 전달하는데 이벤트는 한쪽에서 다른 쪽으로 알림 메시지를 보내는 것과 비슷하다. 즉 '지금 이쪽의 상태는 이렇다'를 다른 쪽으로 보내는 것이다. 이벤트를 보내고 받기 위해서 노드의 객체는 EventEmitter를 상속받을수 있으며, 이 객체의 on() 과 emit() 메소드를 사용할 수 있다.on() 메소드는 이벤트가 전달된 객체에 이벤트 리스너를 설정하는 역할을 하는데 이 리스너 함수는 객체로 전달된 이벤.. 더보기
php vs. Node 1. PHP 의 장점1) 코드와 컨텐츠의 융합: HTML과 CSS로 웹사이트를 제작 하던 중, 특정 프로세스를 웹 상에 추가하거나, URL의 일부 파라미터에 따라 예쁘게 다듬고 싶거나,데이터베이스의 데이터를 사이트에 이용하고 싶은 경우 즉석으로 태그를 열어 작성 가능 2) 깊은 코드의 기반: 대다수 인기 플랫폼들이 웹 서버 구축에 PHP 를 사용합니다. 오픈소스로 공개된 코드도 많고,플러그인도 많이 존재. 따라서 Node 에 비해 상용화가 많이 되어있다 3) SQL과의 연동성: MySQL과 MariaDB등 많은 DB 언어들과 공존하고 있는 언어다. DB 언어마다 쿼리에 차이가 있겠지만, 그것에 맞게 PHP코드를 조금만 변경해 주면 가능. 웹 서버가 가져야 하는 필수요소가 DB 관리 능력인데 PHP는 이를.. 더보기

반응형