-
백준 2240번 자두나무 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 3. 27. 13:28
이번 글은 백준 알고리즘 2240번 "자두나무" 를 다뤄본다.이 문제의 풀이는 동적계획법으로 해결한다. 매 초마다, 두 개의 나무 중 하나의 나무에서 열매가 떨어지게 된다. 만약 열매가 떨어지는 순간, 자두가 그 나무의 아래에 서 있으면 자두는 그 열매를 받아먹을 수 있다. 두 개의 나무는 그다지 멀리 떨어져 있지 않기 때문에, 자두는 하나의 나무 아래에 서 있다가 다른 나무 아래로 빠르게(1초보다 훨씬 짧은 시간에) 움직일 수 있다. 하지만 자두는 체력이 그다지 좋지 못해서 많이 움직일 수는 없다.자두는 T(1≤T≤1,000)초 동안 떨어지게 된다. 자두는 최대 W(1≤W≤30)번만 움직이고 싶어 한다. 매 초마다 어느 나무에서 자두가 떨어질지에 대한 정보가 주어졌을 때, 자두가 받을 수 있는 자두의 ..
-
URI vs URL vs URN :: 마이구미HTTP 2017. 3. 25. 17:43
이번 글은 URI, URL, URN 을 다뤄본다.URI와 URL은 아직도 많이 혼동되고 있다.우리는 대부분 URL이라는 표현을 하고 있다.우리가 보고 있고, 사용하고 있는 대부분이 사실 URL이기 때문이다. URI, URL, URN 개념URL의 한계(URN 나온 이유)URI URL 차이점 URI와 URL은 같다고 주장도 있고, 다르다는 주장도 있다.이러한 말들이 이번 글의 목적이기도하다. 먼저 URI, URL, URN에 대해 알아보자. 서버 리소스 이름은 통합 자원 식별자(uniform resource identifier) 혹은 URI라고 불린다.URI는 인터넷의 우편물 주소 같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다.그리고 이 URI에는 두 가지 형태가 있는데 이것이, URL..
-
Ready check failed 오류 해결 [Redis] :: 마이구미Nodejs 2017. 3. 23. 15:18
이번 글은 Redis auth 관련 오류를 다뤄본다.여기서 auth의 의미는 Redis에 설정할 수 있는 암호이다.기본적인 Redis 관련은 다른 글들에서 다뤘으니 아래 작성된 URL을 참고하길 바란다. auth 관련 오류는 대부분 auth 설정 관련 문제로 발생한다.하지만 본인의 경우 평상시에는 문제가 없다가 테스트를 할 때 오류가 발생했다.테스트 환경은 Mocha 이다. Mocha 관련 글auth 설정에 아무 문제가 없는데 오류가 발생한다면, 참고하길 바란다. ReplyError: Ready check failed: NOAUTH Authentication required. 테스트만 하면 auth 가 실패하는 오류가 발생했다.본인은 여러개의 db index를 사용하기 위해서는 복잡하고 중복되는 코드를 ..
-
백준 2011번 암호코드 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 3. 19. 15:43
이번 글은 백준 알고리즘 문제 2011번 "암호코드" 를 다뤄본다.동적 계획법으로 접근하는 문제이다.일단 문제를 보자. 상근이와 선영이가 다른 사람들이 남매간의 대화를 듣는 것을 방지하기 위해서 대화를 서로 암호화 하기로 했다. 그래서 다음과 같은 대화를 했다.상근: 그냥 간단히 암호화 하자. A를 1이라고 하고, B는 2로, 그리고 Z는 26으로 하는거야.선영: 그럼 안돼. 만약, "BEAN"을 암호화하면 25114가 나오는데, 이걸 다시 글자로 바꾸는 방법은 여러가지가 있어.상근: 그렇네. 25114를 다시 영어로 바꾸면, "BEAAD", "YAAD", "YAN", "YKD", "BEKD", "BEAN" 총 6가지가 나오는데, BEAN이 맞는 단어라는건 쉽게 알수 있잖아?선영: 예가 적절하지 않았네 ..
-
async 모듈을 통한 비동기 제어 :: 마이구미Nodejs 2017. 3. 18. 22:11
비동기 관련 최신글 async/await - http://mygumi.tistory.com/328 이번 글은 Node.js 에서 비동기를 제어하기 위한 방법 중 Async 모듈을 다뤄본다.비동기 제어는 비동기 프로그래밍을 하다보면 접할 수 있는 문제점들이 있기에 필요하다.예를 들어, ajax, db query, request 등 비동기로 처리되다보니 콜백지옥을 맛보기도 한다. 위의 말이 이해가 가지 않더라도,아래 예시를 통해 조금 더 자세히 다룰테니 이번 글의 요지를 알 수 있으니 끝까지 읽어보길 바란다. 다음의 코드를 보자. app.get('/user/:userId', function(req, res) { var locals = {}; var userId = req.params.userId; db.ge..
-
백준 2225번 합분해 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 3. 9. 20:11
이번 글은 백준 알고리즘 문제 2225번 "합분해" 를 다뤄본다.동적계획법으로 접근하는 문제이다.일단 문제를 보자. 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다. 문제는 간단하다.하지만 점화식을 생각하기에는 어렵다.간단하게 먼저 2차원 배열로 생각해보자.DP[K][N] = K개를 더해서 합이 N일 경우를 생각할 수 있다.이어서 그림을 통해 알아보자. 그림을 설명해보자면, 합 N을 만들기 위해서는 0~N까지 정수가 다양하게 존재한다.그 중 마지막 수를 L라고 가정하자.L 이전의 수들의 합은 N-L 이라는 것을 알 수 있다.또한 K개..
-
백준 10164번 격자상의 경로 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 3. 5. 23:59
이번 글은 백준 알고리즘 문제 10164번 "격자상의 경로" 를 다뤄본다.동적계획법으로 접근하는 문제이다.일단 문제를 보자. 격자의 1번 칸에서 출발한 어떤 로봇이 아래의 두 조건을 만족하면서 N×M번 칸으로 가고자 한다. 조건 1: 로봇은 한 번에 오른쪽에 인접한 칸 또는 아래에 인접한 칸으로만 이동할 수 있다. (즉, 대각선 방향으로는 이동할 수 없다.)조건 2: 격자에 ○로 표시된 칸이 있는 경우엔 로봇은 그 칸을 반드시 지나가야 한다. 동그라미 표시된 칸을 무조건 지나가는 경로의 수를 찾는 문제이다.점화식을 만드는 방법은 문제에서 알려준 조건을 보면 쉽게 파악할 수 있다. 조건 1을 보면, 오른쪽에 인접한 칸 또는 아래에 인접한 칸으로만 이동할 수 있다고 한다.기준이 되는 칸으로 올 수 있는 경우..
-
Redis 설치 및 셋팅 [EC2] :: 마이구미리눅스 2017. 3. 2. 15:55
이번 글은 Redis 설치 및 셋팅에 대해 다뤄본다.본인은 Amazon EC2 인스턴스를 사용한다.12개월간 무료인 서비스가 있으니 몰랐다면 좋은 경험이 될 것이다. (Amazon EC2 Free Tier) OS는 Amazon Linux AMI 기준으로 글을 작성한다. Redis 설치와 셋팅을 알아보자.여기서 셋팅은 조금 더 효율적으로 Redis를 설치하여 사용하는 법을 말한다.예를 들어 일반적으로 설치를 하면 Redis Server를 실행하더라도 Server가 죽으면 Redis Server 또한 죽는다.개발 시에는 문제가 없지만, 실제 서비스라면 문제가 된다. 우선, Server를 업데이트하고, Toolchain을 설치해야한다.*Toolchain - System의 Compile 환경이라고 생각하면 된다..