if (cond == true) return true
회사에서 코드 리뷰를 할 때 다음과 같은 패턴의 코드가 자주 눈에 띈다.
if (condition == true) {
return true;
} else {
return false;
}
내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.
연속되는 에 대해 가장 많은 소수를 만들어내는 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자리가 되는 항을 구해야 하므로 피보나치 수열을 계산할 때 +
대신 자릿수에 관계 없이 계산할 수 있는 +'
를 사용해야 한다.
프로젝트 오일러 24번은 clojure.math.combinatorics
에 있는 nth-permutation
을 이용해 문제를 너무 쉽게 풀었다. 그런데 순열을 직접 구하려면 어떻게 해야 할까?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9로 만들 수 있는 1,000,000번째 사전식 순열은?
clojure.math.combinatorics
의 nth-permutation
함수를 이용하면 바로 답을 구할 수 있다. 다만 인덱스가 0부터 시작한다는 점에 주의해야 한다.
어떤 정수가 몇 자리 수인지 어떻게 판단할 수 있을까? 몇 가지 방법이 떠오른다. 사람에 따라 다르겠지만 내게 가장 먼저 떠오른 방법은 로그 함수를 사용하는 것이었다. 정수를 문자열로 바꾼 다음 문자열의 길이를 구하는 방법도 생각할 수 있다. 10으로 몇 번 나눌 수 있는지 확인하는 방법도 있다.
이상한 모임 사이트에서 글을 읽을 때 상단에 프로그레스 바(progress bar)가 표시되는 것을 발견했다. 스크롤해서 글을 읽어감에 따라 글을 얼마나 읽었는지, 얼마나 남았는지를 쉽게 알 수 있어 매우 마음에 들었다. 내 블로그에도 이걸 적용하면 좋겠다는 생각이 들어 툭탁툭탁 만들어 봤다.
두 초과수의 합으로 나타낼 수 없는 모든 양의 정수의 합은?
초과수인지 판단하려면 진약수의 합을 알아야 한다. 문제 21에서 구현한 진약수의 합을 구하는 함수를 이용하면 다음과 같이 주어진 수가 초과수인지 판단하는 함수를 간단히 구현할 수 있다.