Posts

프로젝트 오일러 17

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

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

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

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

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

Read more...

Sitemap 생성기

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

Read more...

프로젝트 오일러 16

2^{1000} 의 각 자릿수를 모두 더하면?

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

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

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...

Hexo: 3.0 업그레이드

정적 사이트 생성기로 Hexo를 사용하고 있는데, 최근 버전 3.0이 나왔다. 사용하는 소프트웨어를 항상 최신 버전으로 유지하고자 하는 마음 때문에 업그레이드 했는데, 블로그가 아예 뜨지도 않는 난감한 상황이 발생했다. 온갖 삽질 끝에 블로그를 제대로 뜨게 하는 데 며칠이나 허비했다. Breaking Changes in Hexo 3.0에서의 Breaking이 기존 것을 다 깨먹는다는 뜻이었나 싶을 정도였다.

Read more...

프로젝트 오일러 13

50자리 숫자 100개를 더한 값의 첫 10자리 구하기

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

Long.MAX_VALUE는 9223372036854775807로 20자리 수를 표현할 수 있다. 문제에서 나오는 숫자는 50자리므로 Long의 표현 범위를 벗어난다. 이런 수를 100개 더하려면...

Read more...

프로젝트 오일러 12

500개 이상의 약수를 갖는 가장 작은 삼각수는?

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

삼각수의 시퀀스를 만들어 앞에서부터 하나씩 약수의 개수를 조사하면 될 것 같다. 문제 1에서 1부터 n까지 정수 합을 구하는 공식을 살펴봤다. n번째 삼각수는 1부터 n까지 합이므로 공식을 이용해 다음과 같이 n번째 삼각수를 구하는 함수를 만들 수 있다.

Read more...