프로젝트 오일러 56

내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.

프로젝트 오일러 56

a^b 형태의 자연수에 대해 자릿수 합의 최대값 구하기

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

문제 16에서 만든 pow 함수를 이용하면 문제를 쉽게 풀 수 있다.

(ns p056
  (:require [util :refer (pow digits)]))

(defn solve []
  (->> (for [a (range 1 100) b (range 1 100)] (pow a b))
       (map digits)
       (map #(apply + %))
       (apply max)))

여기서 사용한 pow 함수는 Clojure의 BigInt를 사용하는데, 이는 문제의 의도를 회피한 것이라 할 수 있다. 문제 20에서 사용했던 방법을 응용해 a^b 를 숫자 시퀀스로 바꾼 다음 거듭제곱을 구하는 방법을 생각할 수 있겠지만, 여기서는 시도하지 않는다.

참고