Posts

프로젝트 오일러 81

오른쪽과 아래로만 움직이면서 좌상단→우하단으로 가는 경로의 합이 최소인 경우는?

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

이 문제는 앞에서 풀었던 문제 18과 매우 비슷하다. 행렬을 시계 방향으로 45° 돌려놓고 생각하면 편하다. 문제 18에서는 삼각형 바닥부터 위로 올라가면서 계산하면 됐다. 여기서는 삼각형뿐 아니라 역삼각형도 고려해야 한다는 차이가 있을 뿐이다.

Read more...

Sandbox의 뜻

프로그래밍 또는 보안 관련 책을 읽다 보면 종종 '모래상자'란 용어가 나온다. 'sandbox'를 '모래상자'로 번역한 것이다. '모래상자'란 단어를 보면 어떤 그림이 떠오르는가? 'sandbox'를 직역하면 '모래상자'가 맞긴 하지만, 나는 이렇게 번역하는 게 마음에 들지 않는다.

Read more...

출퇴근 시간

출퇴근 시간이 적을 수록 좋다고 생각했다. 회사와 집이 멀리 떨어져 있으면 출퇴근에 많은 에너지를 쓰게 된다. 몸도 힘들고 시간도 아깝다. 1시간이 넘으면 계속 다니기가 힘들게 느껴졌다. 그래서 가급적 회사 근처에 집을 얻곤 했다.

Read more...

영국에서의 1년

개요

가족과 함께 외국에 와서 적응하는 것은 생각했던 것보다 어려웠다. 내 한 몸 챙기기도 버거운데 가족 일까지 신경을 써야 해서 힘에 부쳤다. 한국에서 회사를 옮긴 경우에는 새 회사에 적응하는 데 집중할 수 있었지만, 여기서는 나만 적응한다고 되는 게 아니다. 다른 식구들도 새로운 환경에 적응할 수 있도록 도와야 한다.

Read more...

프로젝트 오일러 80

무리수인 제곱근들의 자릿수 더하기

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

이 문제를 푸는 데 Math.sqrt를 사용할 수는 없다. Math.sqrt가 리턴하는 double 형의 유효자리 숫자는 고작 17자리에 불과하다. 제곱근의 자릿수를 원하는 만큼 구할 수 있는 다른 방법이 필요하다. 다행히 Sqrt root by substraction에 정수의 제곱근을 구하는 방법이 자세히 나와 있다.

Read more...

프로젝트 오일러 79

접속 기록으로부터 비밀번호 알아내기

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

접속 기록 데이터가 많지 않으므로 코드를 아무렇게나 짜도 답을 빠르게 구할 수 있을 것이다. 먼저 다음과 같이 접속 기록을 읽는 코드를 작성한다.

(def keylog
  (-> (slurp "data/keylog.txt")
      (clojure.string/split #"\r\n")
      distinct
      sort))

중복을 제거하면 접속 기록이 서른 세 개밖에 되지 않는다.

Read more...

프로젝트 오일러 78

동전을 여러 더미로 나누는 경우의 수 세기

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

동전을 여러 더미로 나누는 방법의 수는 정수를 덧셈으로 표시할 수 있는 방법의 수와 같다. 위키백과를 찾아보면 다음과 같이 공식이 나와 있다.

%math \begin{aligned} p(n) &= \sum_{k \neq 0} (-1)^{k-1}p(n - g_k) \newline g_k &= \frac{k(3k-1)}{2} \end{aligned}

n 을 증가시키면서 p(n) 을 구해 1백만으로 나누어 떨어지는지 확인하는 방법으로 답을 찾을 수 있다. p(n) 을 구하는 데 필요한 g_k 는 다음과 같이 쉽게 구현할 수 있다.

Read more...

Emacs를 이용한 단순 반복 작업

며칠 전 아주 지겨워 보이는 작업을 하게 되었다. 엑셀 파일에 있는 정보를 참고해 설정 파일을 수정하는 일이었다. 설정 파일은 국가별 설정 정보를 담고 있는데 각 국가별 설정에 새로운 필드를 추가해야 하고 필드의 값은 엑셀 파일을 참조해 지정해야 했다.

Read more...

On Call

아마존에 오기 전 아마존이 다닐만한 회사인지 조사하는 데, 온콜에 대한 불만을 토로하는 글이 많이 보였다. 온콜이 뭐길래 그러지? 사전을 찾아보니 다음과 같이 설명되어 있다. 우리 말로 하면 '당직'과 비슷한 개념일 것 같다.

Read more...

프로젝트 오일러 77

소수의 합으로 나타내는 방법이 5000가지가 넘는 최초의 숫자는?

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

이 문제도 바로 전에 풀었던 문제 76과 마찬가지로 문제 31비슷하다. 여기서는 동전의 종류가 소수라고 생각하면 된다. 따라서 인덱스를 넣으면 소수가 나오는 맵을 만들어 두면 문제 풀이에 활용할 수 있다. 소수는 100개 정도 준비하면 충분할 것 같다.

Read more...