프로젝트 오일러 31
영국 화폐 액면가를 조합하는 방법의 수
재귀를 이용하면 쉽게 풀 수 있다. 동전의 종류를 숫자 1, 2, ...로 표현하면 문제를 풀 때 도움이 된다. 따라서 다음과 같이 종류 숫자를 인자로 주면 동전 값을 리턴하는 함수를 만들 수 있다.
내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.
영국 화폐 액면가를 조합하는 방법의 수
재귀를 이용하면 쉽게 풀 수 있다. 동전의 종류를 숫자 1, 2, ...로 표현하면 문제를 풀 때 도움이 된다. 따라서 다음과 같이 종류 숫자를 인자로 주면 동전 값을 리턴하는 함수를 만들 수 있다.
각 자리 숫자를 5제곱해서 더했을 때 자기 자신이 되는 수들의 합은?
이 문제는 무차별 대입법으로 풀 수 있다. 다만 루프를 무한히 반복하지 않으려면 상한을 알아야 한다. 6자리 수 중 가장 큰 정수는 999,999다. 이 수의 각 자리 숫자를 5제곱해 더하면 354,294가 된다. 즉 6자리 수 중 가장 큰 정수의 각 자릿수를 5제곱해 더해도 354,294보다 큰 수는 못 만든다는 뜻이다.
Emacs를 쓰는 이유가 뭘까? 현대적 에디터와 비교해보면 투박하기 짝이 없는 이 구닥다리 에디터를 여지껏 사용하는 이유가 뭘까? 한참을 생각해 보았지만 명확한 이유를 설명할 수 없다.
이고 인 , 로 만들 수 있는 의 개수
가 대략 100가지, 가 대략 100가지이므로 는 대략 10,000가지 수가 나올 것이다. 여기서 중복을 제거하면 답을 구할 수 있다.
1001×1001 나선모양 행렬에서 대각선 원소의 합은?
대각선 원소에 대한 공식을 구하면 쉽게 문제를 풀 수 있다. 첫 번째 링의 요소는 다음과 같다.
여기서 대각선 요소를 작은 수부터 나열하면 3, 4, 7, 9다.
연속되는 에 대해 가장 많은 소수를 만들어내는 2차식 구하기
란 식이 주어졌고 의 범위가 으로 주어졌으므로, 무식하게 루프를 돌리는 방법으로 풀이를 시도해 볼 수 있다. 대략 4백만 가지의 조합에 대해 얼마나 많은 소수를 만들 수 있는지 확인해야 한다.
1000 이하의 중에서 이 가장 긴 순환마디를 갖는 수는?
의 순환마디를 구하려면 어떻게 해야 할까? 이 문제를 풀려면 초등학교때 배웠던 나눗셈 절차를 잘 분석하고 이를 수행하는 프로그램을 만들어야 한다. 예를 들어 를 구하는 과정을 자세히 살펴보자.
회사에서 코드 리뷰를 할 때 다음과 같은 패턴의 코드가 자주 눈에 띈다.
if (condition == true) {
return true;
} else {
return false;
}
contenteditable
을 사용하지 않고 에디터를 개발하기로 했다면 브라우저에서 키 입력 이벤트를 받아 처리할 IME(Input Method Editor)를 만들어야 한다. 텍스트 필드나 div
에 텍스트를 입력할 수 있게 한 다음 여기서 키 이벤트를 받아 처리하는 방식으로 구현한다. div
에 텍스트를 입력하려면 contenteditable
을 써야 하지만, 에디터 창에 contenteditable
을 써서 편집하는 것과는 다르다. 개발할 때는 입력을 제대로 처리하는 지 확인하기 쉽게 IME를 표시하기도 하지만, 나중에는 IME를 보이지 않게 처리해 에디터 화면에 텍스트가 직접 입력되는 것처럼 보이게 한다.
피보나치 수열에서 처음으로 1000자리가 되는 항은 몇 번째?
피보나치 수열을 구하는 방법은 프로젝트 오일러 2번 풀이에서 설명했다. 2번에서는 4백만 이하의 항을 다루었지만 이 문제에서는 1,000자리가 되는 항을 구해야 하므로 피보나치 수열을 계산할 때 +
대신 자릿수에 관계 없이 계산할 수 있는 +'
를 사용해야 한다.