Posts

프로젝트 오일러 18

삼각형을 따라 내려가면서 합이 최대가 되는 경로 찾기

문제 자세히 보기: [국어] [영어]

문제를 언듯 보면 합이 최대가 되는 경로를 찾아야 할 것 같지만, 명시적으로 경로를 구하지 않더라도 경로의 합이 최대가 되는 값을 찾을 수 있다.

Read more...

과도한 로깅

과유불급(過猶不及)
정도를 지나침은 미치지 못함과 같다
- 논어(論語) 선진편(先進篇)

방문자가 매우 많은 사이트에서 애플리케이션을 배포하는 작업은 부담이 크다. 다행히 애플리케이션 서버를 여러 대 두기 때문에 서버 한 대가 잘못되더라도 사이트 전면 장애가 발생하지는 않는다. 새로운 코드를 배포할 때는 항상 서버 한 대에 먼저 배포해 놓고 일정 시간 동안 모니터링 한다. 문제가 없는 경우에는 전체 서버로 배포하고, 로그에 예외나 에러가 표시되면 즉시 롤백한다.

Read more...

tail은 이제 그만

서버에서 로그 파일을 모니터링 할 때 보통 tail -f를 사용한다. 그런데 최근 더 좋은 방법을 알게 되었다. 바로 less +F를 사용하는 것이다. tail -f를 사용할 때 파일에서 어떤 내용을 찾고 싶을 때는 흔히 다음 두 방법을 사용한다.

Read more...

프로젝트 오일러 17

1부터 1000까지 영어로 썼을 때 사용된 글자의 개수는?

문제 자세히 보기: [국어] [영어]

별로 어려운 문제는 아니다. 다음과 같은 절차로 풀 수 있다.

  1. 숫자를 입력하면 그 수에 대한 영어 문자열을 리턴하는 함수를 작성한 다음
  2. 이 함수를 이용해 1~1000을 영어 문자열로 매핑
  3. 문자열을 모두 연결해 문자열에서 공백과 하이픈('-')을 제거
  4. 3에서 구한 문자열의 길이 계산

즉 주어진 숫자를 문자열로 바꾸는 함수를 구현하면 문제를 간단히 풀 수 있다.

Read more...

Sitemap 생성기

블로그를 정적 사이트 생성기로 만들어 GitHub에 처음 올렸을 때가 생각난다. 그전에 사용했던 티스토리나 블로거에서는 글을 올리고 별다른 작업을 하지 않아도 일정 시간이 지난 후 구글에서 검색이 되었다. 그래서 GitHub 페이지로 블로그를 옮긴 다음에도 언제쯤 구글에서 검색이 될까 마냥 기다렸다.

Read more...

프로젝트 오일러 16

의 각 자릿수를 모두 더하면?

문제 자세히 보기: [국어] [영어]

은 300자리가 넘는 매우 큰 수다. int, long과 같은 기본 데이터 타입에는 이렇게 큰 수를 담을 수 없다. double 이상의 매우 큰 수를 표현할 수 있지만 유효자릿수가 15~17자리여서 의 모든 자릿수를 담을 수 없다.

Read more...

statement와 expression

언젠가 동료 한 명이 'statement와 expression의 차이가 뭔지 아냐?'고 물어본 적이 있다. 프로그래밍 책에서 자주 접했던 용어지만 명확히 답할 수 없었다. statement는 명령문이고 expression은 표현식인데...

Read more...

프로젝트 오일러 15

20×20 격자의 좌상단에서 우하단으로 가는 경로의 수?

문제 자세히 보기: [국어] [영어]

paths

격자에서 오른쪽으로 이동하는 경로를 r(right), 아래쪽으로 이동하는 경로를 d(down)라 하면 2x2 격자의 좌상단에서 우하단으로 가는 경로는 다음과 같은 식으로 표현할 수 있다.

Read more...

프로젝트 오일러 14

백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은?

문제 자세히 보기: [국어] [영어]

주어진 양의 정수 n에 대한 우박수열을 구하는 함수를 만든 다음, 1백만까지 우박수열을 구하면서 수열의 길이가 가장 길어지는 n을 구하면 된다. 우박수열을 구하는 함수는 다음과 같이 간단히 작성할 수 있다.

Read more...

Emacs: 여러 파일 안의 텍스트 찾기/바꾸기

hexo-math 플러그인에서 사용해 수식을 표현하는데, 예전에는 {% raw %}{% math-block %} ... {% endmath-block %}{% endraw %}로 수식 블록을 표시했지만 Hexo 3.0에서는 이 부분이 깨졌다. 결국 {% raw %}{% math_block %} ... {% endmath_block %}{% endraw %}를 사용하도록 hexo-math가 수정되었다. 이에 따라 블로그의 모든 글에서 math-block을 사용하는 부분을 찾아 math_block으로 바꿔줘야 했다. Emacs를 사용하면서 버퍼 안에서 찾기/바꾸기는 많이 해봐 익숙했지만 여러 파일에 대해 찾기/바꾸기를 해본 적은 없었다.

Read more...