Posts

프로젝트 오일러 73

분모가 12,000 이하일 때 1/3과 1/2 사이에 위치한 기약 진분수의 개수

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

무차별 대입법

분모가 12,000 이하인 경우만 조사하면 되므로 분자와 분모에 12,000 이하의 수를 대입해가며 분수를 만들어 1/3과 1/2 사이의 기약 진부수를 세는 방법으로 답을 구할 수 있을 것 같다. 분모는 3부터 12,000까지, 분자는 분모/3 ~ 분모/2 사이의 정수를 대입해보면 된다.

Read more...

프로젝트 오일러 72

분모가 1백만 이하인 기약 진분수의 개수

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

분모가 d 인 경우 기약 진분수의 개수는 d 와 서로 소인 정수의 개수와 같다. 이는 Euler’s totient function의 정의와 동일하다. 따라서 분모가 1백만 이하인 기약 진분수의 개수를 S 라 하면 S 는 다음과 같이 구할 수 있다.

Read more...

프로젝트 오일러 71

기약 진분수를 커지는 순으로 늘어놓기

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

분모가 n 보다 작거나 같은 0과 1 사이의 기약 진분수의 수열을 Farey sequence라 한다. 이 수열에서 \frac{a}{b} \frac{c}{d} 가 이웃이고 \frac{a}{b} < \frac{c}{d} 면, 두 수의 차는 \frac{a}{b} - \frac{c}{d} = \frac{1}{bd} 가 되어야 한다.

Read more...

Java에서 배열 합치기

옆 자리 동료가 Java에서 배열을 합치는 간단한 방법이 있는지 질문했다. 열 개 정도의 배열을 하나로 합치고 싶다는 것이었다. 당장 떠오른 방법은 System.arraycopy를 사용하는 것이었지만 이걸 몰라서 물어보지는 않았을 것이다. System.arraycopy를 사용하면 효율적이긴 하겠지만 코드는 별로 예쁘지 않을 것이다. 혹시 이미 이 기능을 구현한 라이브러리가 있나 확인했지만 찾을 수 없었다.

Read more...

나의 글쓰기 도구 변천사

그간 생각을 정리하려고 꾸준히 노력했다. 갑자기 떠오른 아이디어, 새롭게 배운 지식, 책에서 본 마음에 드는 구절, 이것 저것에 대한 잡생각 등 마음만 먹으면 쓸 거리는 넘쳐난다. 자발적으로 작성하는 문서는 모두 미래의 나를 위한 것이다. 그냥 보관하는 것이든 블로그에 공개하는 것이든 다른 사람에게 보여주기 보다는 내가 잊지 않으려고 정리하는 것이다. 그동안 글을 쓰는 데 여러 도구를 사용했다. 어떤 도구를 거쳐 지금에 이르렀는지 정리하는 것도 재미있을 것 같다.

Read more...

프로젝트 오일러 70

φ(n)이 n의 순열이 되는 수 조사하기

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

\phi(n) n 의 순열이 되는 수 중에서 n/\phi(n) 이 최소가 되는 n 을 구해야 한다. n/\phi(n) 이 다음과 같이 표현될 수 있음을 문제 69에서 확인했다.

%math \begin{aligned} \frac{n}{\phi(n)} = \frac{1}{\prod_{p|n}\left(1-\frac{1}{p}\right)} \end{aligned}

Read more...

프로젝트 오일러 69

n/φ(n)이 최대가 되는 1백만 이하의 n 찾기

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

Euler's totient function을 보면 \phi(n) 의 공식을 확인할 수 있다. \phi(n) 을 구하려면 n 의 모든 소수 약수를 하나씩 넣어가며 곱을 수행해야 한다.

%math \require{cancel} \begin{aligned} \phi(n) = n \prod_{p|n}\left(1-\frac{1}{p}\right) \end{aligned}

Read more...

아마존에서의 첫 작업

입사한 지 두 달 만에 의미 있는 일을 하게 되었다. 새로운 프로젝트에서 사용할 메트릭 라이브러리를 만드는 작업이었다. 서비스가 호출될 때 또는 서비스 내에서 다른 다운스트림 서비스를 호출할 때 메트릭 정보를 남겨두면 모니터링 도구를 이용해 서비스가 호출된 횟수, 요청을 처리하는 데 걸린 시간, 다운스트림 서비스를 호출하는 데 걸린 시간, 오류 발생 빈도 등을 확인할 수 있다. 아마존은 이미 이런 작업을 위한 내부 도구를 갖추고 있다. 메트릭 정보를 기록하는 라이브러리도 있다. 내가 할 일은 우리 팀에서 새로 개발할 서비스에서 메트릭 정보를 쉽게 남길 수 있게 하는 라이브러리를 만드는 일이었다.

Read more...

과도한 AB 테스트

AB 테스트에 대한 글을 읽으면, 간단한 문구 수정이나 버튼 색상 변경 만으로도 전환율이 몇 배 이상 높아졌다, 매출이 몇 십 퍼센트 늘어났다는 주장을 쉽게 볼 수 있다. 단순한 변경만으로 그런 극적인 효과를 얻을 수 있다는 게 미덥지 않지만, 어떤 변경이 긍정적 효과를 주는지 확인하는 수단으로 AB 테스트는 좋은 방법이다.

Read more...

프로젝트 오일러 68

마방진 성질을 갖는 5각 도형에서 얻을 수 있는 16자리 수의 최대값 구하기

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

5각 도형의 빈 칸을 다음과 같이 a, b, ..., j 로 지정할 수 있다.

문제 그림

Read more...