Duplicate lines
예전에 Eclpse를 쓸 때 알게 된 편리한 기능이 있다. 하나는 Move lines up/down 기능으로 Alt+<up>
또는 Alt+<down>
키로 현재 선택 영역 또는 현재 행을 위/아래로 이동하는 기능이고, 다른 하나는 Duplicate lines 기능으로 Cmd+Alt+<down>
키를 누르면 현재 선택 영역 또는 현재 행을 아래로 복사하는 기능이다.
내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.
두 개의 파란 공이 뽑힐 확률이 50%인 경우
공 전체 개수를 , 파란 공 개수를 라 하면, 상자에서 무작위로 두 개의 공을 꺼냈을 때 두 개가 모두 파란 색일 확률은 다음과 같이 나타낼 수 있다.
예전에 Eclpse를 쓸 때 알게 된 편리한 기능이 있다. 하나는 Move lines up/down 기능으로 Alt+<up>
또는 Alt+<down>
키로 현재 선택 영역 또는 현재 행을 위/아래로 이동하는 기능이고, 다른 하나는 Duplicate lines 기능으로 Cmd+Alt+<down>
키를 누르면 현재 선택 영역 또는 현재 행을 아래로 복사하는 기능이다.
밑과 지수 형태로 나타낸 수 중 가장 큰 수 찾기
로그 개념을 알면 쉬운 문제다. 큰 수에 를 취하면 작은 수로 바꿀 수 있다. 예를 들어 은 1 뒤에 0이 백개나 붙는 큰 수지만 은 그냥 100이다. 그러나 는 단조증가 함수기 때문에 어떤 수 가 보다 크다면 도 보다 크다.
제곱수를 나타내는 애너그램 쌍 찾기
단어 수는 2천 개도 안 되지만 각 단어의 알파벳을 임의의 수로 치환하는 경우의 수를 생각하면 엄청나게 많은 계산이 필요하다. 알파벳을 임의의 수로 치환하는 대신 제곱수를 미리 구해놓고 알파벳을 치환할 때 제곱수를 이용해 치환한다면 계산 범위를 크게 줄일 수 있다.
메르센 수가 아닌 소수 의 마지막 10자리는?
은 2백만 자리가 넘는 어마어마하게 큰 수지만, Java의 BigInteger
를 이용하면 계산하지 못 할 것도 없다. 그러나 이 큰 수의 모든 자릿수가 필요한 게 아니라 마지막 10자리만 필요하므로 modPow
를 쓰면 조금 쉽게 계산할 수 있을 것 같다.
영어로 대화할 때 'last Friday', 'this Friday', 'next Friday'와 같은 표현을 자주 접한다. 언젠가 'last Monday'와 'this Monday'가 같은 날이 될 수 있다는 얘기를 들었던 생각이 났다. 그땐 '어떻게 그럴 수가 있지?' 하면서도 깊게 생각하지 않고 그냥 넘어갔던 것 같다. 생각난 김에 정확히 알아두는 게 좋겠다 싶어 내 옆 자리에 앉아 있는 영국인 브래드에게 물어봤다.
스도쿠 퍼즐 풀기
예전에 어디선가 Scala 코드 15줄로 스도쿠 퍼즐을 풀 수 있다는 글을 본 생각이 났다. 어떤 놀라운 알고리즘이 있나 봤는데 알고보니 CSP(Constraint Satisfaction Problem) 라이브러리를 사용한 것이었다. Clojure에서는 core.logic을 사용해 Scala 풀이와 비슷하게 문제를 풀 수 있다.
1백만 이하의 숫자로 이루어진 친화고리
주어진 정수의 진약수 합을 구하는 맵이 있으면 문제를 쉽게 풀 수 있을 것 같다. 문제 21에서 진약수의 합을 구하는 몇 가지 방법을 살펴보았지만 이 문제를 푸는 데 활용할 만큼 빠르지 않다. 그냥 다음과 같이 루프를 돌면서 맵을 만드는 게 나을 것 같다.
지난 4년간 블로그를 생성할 때 Hexo를 사용했는데, 최근 Hugo로 이전했다. StaticGen에서는 정적 사이트 생성기를 깃헙 스타 개수나 트위터 팔로우어 수로 정렬해 볼 수 있다. 4년 전 어떤 프로그램을 쓸까 고민하던 때만 해도 Hexo가 훨씬 인기가 많았던 것 같은데, 지금은 Hugo가 Hexo를 제친 것 같다.
정수 둘레와 정수 넓이를 갖는 거의 정삼각형 찾기
다음 그림과 같이 빗변을 , 밑변을 라 하면, 인 경우가 문제에서 말하는 거의 정삼각형이라 할 수 있다. 삼각형의 높이를 라 하면 피타고라스 정리에 의해 다음 관계가 성립한다.