Posts

Emacs: 최근 사용한 파일 목록

최근 사용한 파일 기능은 그리 자주 사용하는 편은 아니었다. 파일을 찾을 때 그 파일을 최근 열었는지 생각하기 보다는 직접 찾는 게 더 빠르다고 생각했다. IDE를 쓸 때는 소스 파일을 쉽게 찾을 수 있는 기능을 활용했다. 문서 작업을 할 때도 원하는 파일을 특정 디렉터리에서 빠르게 찾을 수 있었다. 아마도 문서 파일을 보관하는 디렉터리 구조도 복잡하지 않았고 파일도 많지 않았기 때문일 것이다.

Read more...

프로젝트 오일러 53

1 \le n \le 100 일때 _nC_r 의 값이 1백만을 넘는 경우는 모두 몇 번?

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

r \le n 이므로 n , r 의 범위는 각각 1 \le n \le 100 , 1 \le r \le 100 이다. 모든 n , r 조합에 대해 _nC_r 을 구한다 해도 경우의 수는 100 \times 100 = 10,000 이므로 금방 구할 수 있다.

Read more...

프로젝트 오일러 52

2배, 3배, 4배, 5배, 6배의 결과도 같은 숫자로 이루어지는 가장 작은 수?

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

어떤 두 수가 같은 숫자로 이루어져 있는지 비교하려면 두 수를 모두 자릿수로 분해한 다음 정렬해 결과가 같은지 확인하면 된다. str 함수로 숫자를 문자열로 바꾼 다음 sort로 정렬하면 각 자릿수가 정렬된 시퀀스를 얻을 수 있다. compsortstr을 합성하면 인자를 문자열로 바꿔 정렬하는 함수를 만들 수 있다. 주어진 여러 개의 숫자가 모두 같은 숫자로 이루어져 있는지 확인하는 함수는 다음과 같이 쉽게 구현할 수 있다.

Read more...

프로젝트 오일러 51

일부 숫자를 치환했을 때 8개의 서로 다른 소수가 생기는 가장 작은 소수?

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

문제를 분석해보면 다음과 같은 조건을 만족해야 함을 알 수 있다.

  • 치환할 위치가 마지막 자리면 안 된다.
  • 치환할 자리는 세 자리여야 한다.
  • 치환할 숫자는 0, 1 또는 2여야 한다.

Read more...

영국에서의 첫 운전

지난 일요일에 중고차를 구입했다. 그러나 차를 구입했다고 바로 운전을 할 수 있는 게 아니었다. 일단 자동차 세금을 내야 운행이 가능하다. 집에 차를 세울 공간이 없어 공영 주차장도 등록해야 했다. 자동차 보험도 들어야 했다. 결국 자동차는 구입 즉시 아는 분 집에 주차해 놓을 수밖에 없었다. 닷새 동안 이 모든 일을 다 처리한 후에야 자동차를 운전할 수 있게 되었다.

Read more...

영국에 오기 전 알았으면 좋았을 것들

한국에서 짐을 쌀 때 정리할 시간도 부족했지만 그냥 처분하기에 아까운 생각도 들어 온갖 잡동사니를 가져왔다. 영국에서 어떻게든 활용할 수 있을 거라 생각했다. 그러나 가져오지 말았어야 할 처치 곤란한 세간이 많았다. 영국에 오기 전에 미리 알았더라면 이렇게 바리바리 싸가지고 오지 않았을 것이다. 싼 값에 처분하거나 아는 사람에게 공짜로 넘기는 편이 훨씬 나았을 것이다.

Read more...

프로젝트 오일러 50

1백만 이하의 소수 중 가장 길게 연속되는 소수의 합으로 표현되는 수는?

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

소수의 누적 합을 만들어두면 문제를 쉽게 풀 수 있다. p_i i 번째 소수라 하고 s(n) n 번째 소수까지의 누적 합이라 하자.

%math \begin{aligned} s(n) = p_1 + p_2 + ... + p_n \end{aligned}

Read more...

프로젝트 오일러 49

세 항이 소수이면서 다른 수의 순열이 되는 4자리 숫자의 등차수열 찾기

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

네 자리 소수에 대해서만 계산을 해보면 되므로, 무차별 대입법을 이용해도 답을 빠르게 찾아낼 수 있을 것 같다. 다음과 같은 도구가 있다면 문제를 쉽게 풀 수 있다.

  • 자릿수가 네 자리인 소수 집합
  • 주어진 네 자리 소수의 순열을 구해 이 중 소수만 걸러내 리턴하는 함수
  • 주어진 시퀀스에서 등차수열을 찾아내는 함수

Read more...

프로젝트 오일러 48

1^1 + 2^2 + 3^3 + ... + 1000^{1000} 의 마지막 10자리는?

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

이 문제 역시 아주 큰 숫자를 다루는 문제지만, Java의 BigInteger나 Clojure의 BigInt를 쓰면 쉽게 풀 수 있다.

Read more...

프로젝트 오일러 47

서로 다른 네 개의 소인수를 갖는 수들이 처음으로 네 번 연속되는 경우는?

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

소인수의 개수를 구하는 함수가 있다면 문제를 쉽게 풀 수 있다. 문제 3에서 소인수 분해 함수를 구현했으므로, 소인수 개수를 구하는 함수는 다음과 같이 간단히 작성할 수 있다.

Read more...