프로젝트 오일러 96

스도쿠 퍼즐 풀기

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

예전에 어디선가 Scala 코드 15줄로 스도쿠 퍼즐을 풀 수 있다는 글을 본 생각이 났다. 어떤 놀라운 알고리즘이 있나 봤는데 알고보니 CSP(Constraint Satisfaction Problem) 라이브러리를 사용한 것이었다. Clojure에서는 core.logic을 사용해 Scala 풀이와 비슷하게 문제를 풀 수 있다.

Read more...

프로젝트 오일러 95

1백만 이하의 숫자로 이루어진 친화고리

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

주어진 정수의 진약수 합을 구하는 맵이 있으면 문제를 쉽게 풀 수 있을 것 같다. 문제 21에서 진약수의 합을 구하는 몇 가지 방법을 살펴보았지만 이 문제를 푸는 데 활용할 만큼 빠르지 않다. 그냥 다음과 같이 루프를 돌면서 맵을 만드는 게 나을 것 같다.

Read more...

블로그 Hugo 이전 후기

지난 4년간 블로그를 생성할 때 Hexo를 사용했는데 최근 Hugo로 이전했다. StaticGen에서는 정적 사이트 생성기를 깃헙 스타 개수나 트위터 팔로우어 수로 정렬해 볼 수 있다. 4년 전 어떤 프로그램을 쓸까 고민하던 때만 해도 Hexo가 훨씬 인기가 많았던 것 같은데, 지금은 Hugo가 Hexo를 제친 것 같다.

Read more...

프로젝트 오일러 94

정수 둘레와 정수 넓이를 갖는 거의 정삼각형 찾기

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

다음 그림과 같이 빗변을 a , 밑변을 b 라 하면, b = a \pm 1 인 경우가 문제에서 말하는 거의 정삼각형이라 할 수 있다. 삼각형의 높이를 h 라 하면 피타고라스 정리에 의해 다음 관계가 성립한다.

%math a^2 = \left( \frac{b}{2} \right)^2 + h^2

Read more...

프로젝트 오일러 93

숫자 4개와 사칙연산을 써서 가장 길게 이어지는 숫자 만들기

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

숫자 네 개에 사칙연산자를 세 개 사용할 수 있으므로, 각 숫자를 A, B, C, D라 하고 사칙연산자를 Op1, Op2, Op3라 하면, 다음과 같은 조합을 생각할 수 있다. 모든 연산은 괄호로 둘러싸 연산자 우선순위를 고려하지 않게 하면 생각하기가 조금 쉬워진다.

Read more...

소득신고

일을 미루는 것은 내 오랜 습관이다. 이번 소득신고 사건 역시 내 오랜 습관의 연장선에 있다. 영국의 과세연도는 매년 4월 6일부터 그 다음해 4월 5일까지다. 온라인 소득신고 마감일은 해당 과세 연도의 다음해 1월 말이다. 종합소득세 신고를 5월 한 달 동안 마쳐야 하는 한국에 비하면 신고 기간이 상당히 여유있게 주어졌다 할 수 있다.

Read more...

프로젝트 오일러 92

자릿수를 제곱해서 더해가는 수열의 신기한 성질

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

무차별 대입법

일단 무식한 방법으로 풀어보자. 1부터 1천만까지 숫자를 대입하면서 자릿수를 제곱해 더한 수가 89에 도달하는지 확인하는 방법이다. 자릿수를 제곱해 더한 수를 구하는 함수는 다음과 같이 간단히 작성할 수 있다.

Read more...

영어 선생님

영국에 와 팀에 합류했을 때 영어로 의사소통하는 것에 어려움을 느꼈다. 특히 영국 사람들이 하는 말을 알아 듣기 힘들었다. 팀 동료가 내 어려움을 알아채고는 회사에서 지원 방법이 있는지 알아보겠다고 했다. 그리고 매니저가 영어 회화 강좌를 들을 수 있게 해 주었다.

Read more...

바둑

한동안 바둑을 두지 않다가 최근 다시 바둑을 두기 시작했다. Online-Go란 사이트를 알게 된 다음부터다. 한국의 바둑 사이트와 달리 구글 아이디로 계정을 만들 수 있고, 별도 프로그램 설치 없이 브라우저에서 바둑을 둘 수 있다. 편리한 만큼 내게는 독이다.

Read more...

프로젝트 오일러 91

사분면 안의 직각삼각형 개수 세기

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

1사분면 0 \le x, y \le 50 에서 P의 가능한 위치는 모두 51 \times 51 이고 Q의 가능한 위치도 51 \times 51 이다. 무차별 대입법으로 문제를 푼다면 51^4 = 6,765,201 번의 루프를 돌면서 직각인지 확인해야 하므로 빠른 시간에 답을 구하지 못한다. 이 방법으로 문제를 풀면 내 환경에서는 답을 구하는 데 7초 이상 걸린다.

Read more...