프로젝트 오일러 95
1백만 이하의 숫자로 이루어진 친화고리
주어진 정수의 진약수 합을 구하는 맵이 있으면 문제를 쉽게 풀 수 있을 것 같다. 문제 21에서 진약수의 합을 구하는 몇 가지 방법을 살펴보았지만 이 문제를 푸는 데 활용할 만큼 빠르지 않다. 그냥 다음과 같이 루프를 돌면서 맵을 만드는 게 나을 것 같다.
내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.
스도쿠 퍼즐 풀기
예전에 어디선가 Scala 코드 15줄로 스도쿠 퍼즐을 풀 수 있다는 글을 본 생각이 났다. 어떤 놀라운 알고리즘이 있나 봤는데 알고보니 CSP(Constraint Satisfaction Problem) 라이브러리를 사용한 것이었다. Clojure에서는 core.logic을 사용해 Scala 풀이와 비슷하게 문제를 풀 수 있다.
1백만 이하의 숫자로 이루어진 친화고리
주어진 정수의 진약수 합을 구하는 맵이 있으면 문제를 쉽게 풀 수 있을 것 같다. 문제 21에서 진약수의 합을 구하는 몇 가지 방법을 살펴보았지만 이 문제를 푸는 데 활용할 만큼 빠르지 않다. 그냥 다음과 같이 루프를 돌면서 맵을 만드는 게 나을 것 같다.
지난 4년간 블로그를 생성할 때 Hexo를 사용했는데, 최근 Hugo로 이전했다. StaticGen에서는 정적 사이트 생성기를 깃헙 스타 개수나 트위터 팔로우어 수로 정렬해 볼 수 있다. 4년 전 어떤 프로그램을 쓸까 고민하던 때만 해도 Hexo가 훨씬 인기가 많았던 것 같은데, 지금은 Hugo가 Hexo를 제친 것 같다.
정수 둘레와 정수 넓이를 갖는 거의 정삼각형 찾기
다음 그림과 같이 빗변을 , 밑변을 라 하면, 인 경우가 문제에서 말하는 거의 정삼각형이라 할 수 있다. 삼각형의 높이를 라 하면 피타고라스 정리에 의해 다음 관계가 성립한다.
숫자 4개와 사칙연산을 써서 가장 길게 이어지는 숫자 만들기
숫자 네 개에 사칙연산자를 세 개 사용할 수 있으므로, 각 숫자를 A, B, C, D라 하고 사칙연산자를 Op1
, Op2
, Op3
라 하면, 다음과 같은 조합을 생각할 수 있다. 모든 연산은 괄호로 둘러싸 연산자 우선순위를 고려하지 않게 하면 생각하기가 조금 쉬워진다.
일을 미루는 것은 내 오랜 습관이다. 이번 소득신고 사건 역시 내 오랜 습관의 연장선에 있다. 영국의 과세연도는 매년 4월 6일부터 그 다음해 4월 5일까지다. 온라인 소득신고 마감일은 해당 과세 연도의 다음해 1월 말이다. 종합소득세 신고를 5월 한 달 동안 마쳐야 하는 한국에 비하면 신고 기간이 상당히 여유있게 주어졌다 할 수 있다.
자릿수를 제곱해서 더해가는 수열의 신기한 성질
일단 무식한 방법으로 풀어보자. 1부터 1천만까지 숫자를 대입하면서 자릿수를 제곱해 더한 수가 89에 도달하는지 확인하는 방법이다. 자릿수를 제곱해 더한 수를 구하는 함수는 다음과 같이 간단히 작성할 수 있다.
영국에 와 팀에 합류했을 때 영어로 의사소통하는 것에 어려움을 느꼈다. 특히 영국 사람들이 하는 말을 알아 듣기 힘들었다. 팀 동료가 내 어려움을 알아채고는 회사에서 지원 방법이 있는지 알아보겠다고 했다. 그리고 매니저가 영어 회화 강좌를 들을 수 있게 해 주었다.
한동안 바둑을 두지 않다가 최근 다시 바둑을 두기 시작했다. Online-Go란 사이트를 알게 된 다음부터다. 한국의 바둑 사이트와 달리 구글 아이디로 계정을 만들 수 있고, 별도 프로그램 설치 없이 브라우저에서 바둑을 둘 수 있다. 편리한 만큼 내게는 독이다.
사분면 안의 직각삼각형 개수 세기
1사분면 에서 P의 가능한 위치는 모두 이고 Q의 가능한 위치도 이다. 무차별 대입법으로 문제를 푼다면 번의 루프를 돌면서 직각인지 확인해야 하므로 빠른 시간에 답을 구하지 못한다. 이 방법으로 문제를 풀면 내 환경에서는 답을 구하는 데 7초 이상 걸린다.